python Selenium Chrome驱动程序-单击取消Chrome身份验证弹出窗口

pb3s4cty  于 2022-10-30  发布在  Python
关注(0)|答案(3)|浏览(166)

我正在使用一个python应用程序的VPN Chrome应用程序。每当我启动一个Chrome示例,而Chrome在VPN插件准备好之前开始加载网站时,就会出现以下弹出窗口。只要我点击取消按钮,VPN插件通常就准备好了,我可以毫无问题地访问互联网。
我正在寻找一种方法来单击“取消”按钮与 selenium 。
到目前为止,我已经尝试过:

  • 将主页设置为Chrome设置-〉弹出窗口不出现,因为设置不是一个网站,短时间后。睡眠,我可以继续没有问题的大部分时间。每隔一段时间,弹出窗口仍然出现。
  • 使用webdriver.ActionChains(driver).send_keys(Keys.ESCAPE).perform()每当我尝试执行此操作时,脚本都会冻结,直到我手动单击Cancel按钮,然后执行此操作。

谢谢你!

编辑1(将Chrome选项设置为不显示通知和信息栏并不能解决此问题):

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import selenium.common.exceptions

options = Options()
options.headless = False

options.add_argument("user-data-dir=ChromeProfiles\Profile_{}".format(22))
options.add_argument("--profile-directory=profile_1")
options.add_argument("--disable-notifications")
options.add_argument("--disable-infobars")

driver = webdriver.Chrome(options=options, executable_path="chromedriver.exe")

如您所见,只要弹出窗口打开,就不会执行命令:

qvtsj1bj

qvtsj1bj1#

1)void dismiss()//单击警报的“取消”按钮。

driver.switchTo().alert().dismiss();

2)void accept()//单击警报的“确定”按钮。

driver.switchTo().alert().accept();

3)String getText()//捕获警报消息。

driver.switchTo().alert().getText();

4)void sendKeys(String stringToSend)//将一些数据发送到警报框。

driver.switchTo().alert().sendKeys("Text");

您可以从Guru 99中引用所有这些内容
此外,您还应该查看是哪种警报,浏览器推送通知、浏览器警报等...
这些是我的chrome选项,用于禁用通知、警报和推送通知

chrome.switches = --incognito;--disable-download-notification;--disable-infobars

另一种实现镶边选项的方法

ChromeOptions ops = new ChromeOptions();
        ops.addArguments("--disable-notifications");
        ops.addArguments("--disable-infobars");
        System.setProperty("webdriver.chrome.driver", "./lib/chromedriver");
        driver = new ChromeDriver(ops);

最后,这里是chrome驱动程序文档,以帮助您进一步。ChromeDriver Docs
编辑:

driver.switchTo().activeElement();
driver.close()

或者你可以试试

Driver.SwitchTo().frame("NameOfFrame");

Driver.findElement("enter path to cancel button").click();

Driver.SwitchTo().defaultContent();

希望这对你有帮助

zfciruhq

zfciruhq2#

无论是任何人点击这里后,年或原始用户:
据我评估,这是一个简单的身份验证。所以基本上你需要从一开始就发送你的用户名和密码:

https://username:password@domain

域是url,可以是任何东西。有了它,基本的身份验证就没有了,你基本上可以正常使用它了。
在Python中,它将是沿着于以下内容的内容:

driver.get("https://username:password@domain")

希望这能帮上忙,至少解决了我的问题

ds97pgxw

ds97pgxw3#

我也尝试了许多解决方案,但是唯一对我有效的解决方案是使用pyautogui包,并按下escape键关闭弹出窗口:

import pyautogui
pyautogui.press('esc')

相关问题