java - 尝试在网站完全打开之前输入登录凭据时出现“无警报打开”
问题描述
我正在尝试访问一个网站,但是要首先访问该网站,我需要输入用户名和密码,然后才能打开完整的网站。当我尝试通过“alert.sendkeys”发送用户名和密码时,它会给出错误“没有打开警报”。请注意,只有先输入用户名和密码,然后单击“登录”进行授权,网站才会打开。我的浏览器是 chrome,版本:64,chrome 驱动程序版本是:2.38。这是我的代码:
public static void launchWebsite(String URL) {
driver.get(URL);
try {
WebDriverWait wait = new WebDriverWait(driver, 2);
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = driver.switchTo().alert();
System.out.println(alert.getText());
alert.sendKeys("website");
alert.sendKeys("grren");
} catch (Exception e) {
System.out.println("No alertis present");
//exception handling
}
}
解决方案
driver.get("http://UserName:Password@Example.com");
如果站点使用基本身份验证,应该可以解决问题。
特别提示:如果你的密码中有@,别忘了把那个bad boy换成a%40
如果您的身份验证服务器需要带有“domainuser”之类的域的用户名,您需要在 url 中添加双斜杠 /:
//localdomain\user:password@example.com
编辑:
Chrome 59 已移除对 https://user:password@example.com URL 的支持。
从 selenium 3.4开始,您可以使用以下方法在IE 中处理它
WebDriverWait wait = new WebDriverWait(driver, 10);
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
alert.authenticateUsing(new UserAndPassword(username, password));
有办法使用 Chrome 扩展来处理这个问题。更多解释可以在这里找到
或者
将您的 chrome 版本降级到 <59
推荐阅读
- javascript - Joi 验证:单个字段的多个验证错误消息
- office-ui-fabric - 将项目拖放到空的详细信息列表中
- excel - vba将具有给定名称的excel文件保存到特定位置
- postgresql - postgresql 中的 uuid_generate 性能缓慢
- javascript - 我可以在 amchart 图中保存状态吗?
- javascript - 如何在悬停时显示 D3 节点的文本?
- c++ - 按名称获取主机 C++ 未显示更新的 IP 地址
- javascript - 动态列表分成两个UL
- php - NGINX 页面显示原始内容而不是 HTML
- javascript - 无法访问匿名函数