我遇到一个我找不到太多信息的问题。我有一个内部公司页面(显示的只是一个插图),在浏览器中打开该页面会显示一个弹出窗口,需要输入用户名和密码。现在,对于InternetExplorer和Firefox来说可以正常工作。该代码导航到desiredUri,页面打开,执行进一步到“ var alert = driver.SwitchTo()...”,然后输入用户名和密码,一切正常。但是使用Chrome,执行实际上会在var alert = driver.SwitchTo().Alert();
处停止!!
因此,驱动程序尝试打开页面,并在打开身份验证警报时显示该消息,但随后将其挂在那里。我可以手动输入用户名和密码,然后它可以工作,但是通过代码,我找不到方法,因为它永远不会进入http://username:password@www.
行,该行对IE和FF非常适用。
有什么想法为什么chrome会以这种方式工作,并且有办法解决这个问题?我试图直接输入用户名和密码作为URL 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);
,但它不适用于我的内部页面,并且仍然显示弹出警报。
abc123abc
请提供有关此问题的任何意见。
答案 0 :(得分:0)
您应该使用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);
希望这对您有帮助