【问题标题】:Selenium Chrome issue - Execution stops at GoToUrl() when an alert is shownSelenium Chrome 问题 - 显示警报时在 GoToUrl() 处停止执行
【发布时间】:2018-12-24 10:23:00
【问题描述】:

我有一个问题,我找不到太多相关信息。我有一个内部公司页面(显示的只是说明),在浏览器中打开时会显示一个弹出窗口,我需要在其中输入用户名和密码。现在对于 InternetExplorer 和 Firefox,这工作得很好。代码导航到所需的Uri,页面打开,执行进一步到“var alert = driver.SwitchTo()...”,然后我输入用户名和密码,一切正常。但是对于 Chrome,执行实际上停止在 driver.Navigate().GoToUrl(desiredUri);!!!

因此,驱动程序尝试打开页面,并在打开身份验证警报时显示,但它只是挂在那里。手动我可以输入用户名和密码,然后它就可以工作,但是通过代码我找不到如何做到这一点的方法,因为它永远不会进入适用于 IE 和 FF 的var alert = driver.SwitchTo().Alert(); 行。 任何想法为什么 chrome 会以这种方式运行,有没有办法解决这个问题?我尝试直接输入用户名和密码作为 URL http://username:password@www.,但它不适用于我的内部页面,并且仍然显示弹出警报。

var driver = new RemoteWebDriver(new Uri("http://localhost:9515"), optionsChrome.ToCapabilities())
String desiredUri = "http://www.internalcompanypage.com";
driver.Navigate().GoToUrl(desiredUri);
var alert = driver.SwitchTo().Alert();
alert.SendKeys(_credentials.UserName);

任何有关此问题的意见都值得关注。

【问题讨论】:

    标签: c# selenium


    【解决方案1】:

    你应该使用WebDriverWait

    var driver = new RemoteWebDriver(optionsChrome.ToCapabilities())
    String desiredUri = "http://www.internalcompanypage.com";
    var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 30));
    driver.Navigate().GoToUrl(desiredUri);
    var alert = driver.SwitchTo().Alert();
    Wait.Until(c => c.FindElement(By.Id(_credentials.UserName)));
    alert.SendKeys(_credentials.UserName);
    

    希望对你有帮助

    【讨论】:

    • 感谢您的回复。不幸的是,它给出了相同的结果。当执行到达..GoToUrl() 行时,它会停在那里。再次var alert = driver.SwitchTo().Alert(); 永远无法到达。如果我不手动输入任何内容,则会出现异常对远程 WebDriver 服务器的 URL localhost:9515/session/15f6195a63bb08c5dec0956547636b40/url 的 HTTP 请求在 60 秒后超时。
    • 嗨,很抱歉回复晚了,我最近几天没工作。没有“localhost:9515”,代码无法运行。它无法启动浏览器,因此出现异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 2019-08-25
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2021-11-15
    • 2022-09-23
    相关资源
    最近更新 更多