Selenium Chromedriver-单击取消Chrome身份验证弹出窗口

时间:2019-04-05 14:22:38

标签: python python-3.x selenium selenium-webdriver selenium-chromedriver

我正在将VPN Chrome应用程序用于python应用程序。每当我启动Chrome实例并在VPN插件准备就绪之前Chrome开始加载网站时,都会显示以下弹出窗口。当我按下“取消”按钮时,VPN附加组件通常即可使用,并且我可以毫无问题地访问Internet。

我正在寻找一种使用Selenium单击“取消”按钮的方法。

到目前为止,我已经尝试过:

  • 将主页设置为“ Chrome设置”->因为设置不是网站,所以没有出现弹出窗口。经过一小段时间。睡眠后,我大部分时间都可以继续进行。偶尔还是会出现弹出窗口。

  • 使用webdriver.ActionChains(driver).send_keys(Keys.ESCAPE).perform() 每当我尝试此操作时,脚本都会冻结,直到我手动按下“取消”按钮,然后才执行操作。 driver.get(url)driver.switch_to.alert()

  • 也会发生同样的情况

谢谢!

Screenshot

编辑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")

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

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

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

还有另一种实现Chrome选项的方法

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();

希望这会有所帮助