java - 在新窗口中弹出警报
问题描述
如何在警报中填写用户名和密码字段?当我单击一个链接时,会打开另一个带有警报身份验证的窗口。我无法切换到警报。我得到超时异常。我使用了这段代码:
// two windows on browser
Set<String> window = driver.getwindowhandles();
Iterator index = window.ierator();
String Parentwindow = index.next();
String Childwindow = index.next();
driver.switchto().window(Childwindow);
// popup on child window
Alert alert = driver.switchto().alert();
alert.sendkeys("username");
alert.sendkeys("password");
解决方案
这个问题之前已经回答过了。Selenium 具有与身份验证弹出窗口一起使用的内置功能。
使用隐式Wait
(这Wait
会等到给定条件变为的时间用完true
),您可以使用以下方法访问Alert
并传递登录凭据authenticateUsing()
:
WebDriverWait wait = new WebDriverWait(driver, 10);
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
alert.authenticateUsing(new UserAndPassword(username, password));
另一种方法是在访问 URL 时直接提供用户名和密码,这Alert
完全绕过了:
driver.get("http://UserName:Password@Example.com");
请参考这个问题:How to handle authentication popup with Selenium WebDriver using Java
推荐阅读
- python - 我是否需要为 python socket.gethostbyname(hostname) 解析名称设置时间?
- windows - 设置环境变量并在一行中执行命令的最佳方法
- python - 烧瓶解码数据
- android - 如何使 sqlite 数据库中的 url 适应 imageview
- javascript - 防止用户在 HTML 中看到视频 URL?
- vb.net - Applycurrent values 仅显示第一个值
- php - 多维数组值中的 JSON 对象值(Google GEO 数据)
- ansible - 如何在 Ansible 中执行交替角色?
- svg - createjs中形状的SVG路径
- node.js - NestJS cookie-parser 在 e2e 测试期间不是函数错误