由于弹出警报,Selenium代码会停止

时间:2018-04-05 11:40:51

标签: c# .net selenium selenium-webdriver selenium-chromedriver

嘿stackoverflow社区,

我有问题。我必须使用Selenium测试网站,但在加载网站之前会出现一个警告框。我的代码停在我的webdriver获取url的地方

public static void GoTo(string url){
    webDriver.Url = baseUrl + url;
}

代码在webDriver.Url = baseUrl + url;中停止,正在等待警报框中的输入。我无法使用SendKeys()函数,因为代码停在那里并且正在等待。

如何解决此问题?

问候 尼古拉斯

2 个答案:

答案 0 :(得分:0)

我假设JS生成了警报。 在Selenium中,您可以使用Actions类处理JS生成的警报。

您需要做的是,您必须将webDriver的焦点切换到生成的警报。

Alert alert = driver.switchTo().alert();
alert.dismiss();   // clicking on cancel.
alert.accept();    // click on yes.
alert.getText();   // Text to the prompt.
alert.sendKeys(charSequence args0); //sending something to that prompt.

如果您在处理警报后在同一页面上,则不需要切换到defaultContent,即使您这样做也没有问题。因为你必须使用:

driver.switchTo().defaultContent();

如果您对Actions类有任何疑虑,请告诉我。

如果它是基于Window的弹出窗口,则需要使用第三方工具,如AutoIT。 Vel Guru为您提供了解决方案。

答案 1 :(得分:0)

它的Windows身份验证弹出窗口您可以在URL中提供凭据,这意味着我们将在URL中添加用户名和密码,这样在运行脚本时它将绕过相同的路径。

实施例

http://username:password@url

使用AutoIT 请参阅链接了解更多详情 http://learn-automation.com/handle-windows-authentication-using-selenium-webdriver/