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

标签 c# selenium

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

因此驱动程序尝试打开该页面,并在打开时显示身份验证警报,但它只是卡在那里。手动我可以输入用户名和密码然后它工作但是通过代码我找不到如何做它因为它永远不会进入 var alert = driver.SwitchTo().Alert();完美适用于 IE 和 FF 的行。 知道为什么 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);

有关此问题的任何意见均适用。

最佳答案

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

希望对你有帮助

关于c# - Selenium Chrome 问题 - 显示警报时执行在 GoToUrl() 处停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53912105/

相关文章:

c# - 如何在 visual studio 或其他构建工具中的一个 C# 项目中混合生成 dll 和 exe?

c# - 服务器表单中的 ASP.net paypal 表单

c# - 如何在不需要等待当前函数/线程的结果的情况下运行异步任务?

python - 如何将 Selenium Firefox 浏览器嵌入到 PyQt4 框架中

selenium - 没有 ID 的复选框的 Xpath

javascript - Selenium 保留缓存吗?为什么我的 javascript 没有在测试中加载?

python - Selenium - 网页抓取相同内容但 xpath 略有不同的多个 url

c# - 将 LINQ 语句从查询转换为流利的 c# 语法

python - ModuleNotFoundError : No module named 'selenium'

c# - 如何使用 FsCheck 为可为 null 的类型生成 null?