Selenium Chrome问题-当显示警报时,执行在GoToUrl()处停止



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

因此,驱动程序试图打开页面,在打开时会显示身份验证警报,但它只是挂在那里。我可以手动输入用户名和密码,然后它就可以工作了,但通过代码我找不到如何做到这一点,因为它从来没有转到var alert = driver.SwitchTo().Alert();行,这非常适合IE和FF。你知道chrome为什么会这样做吗?有办法解决这个问题吗?我尝试直接输入用户名和密码作为URLhttp://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);

关于这个问题的任何意见都会被告知。

您应该使用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);

希望这能帮助你

最新更新