因此,我尝试登录到首次通过弹出窗口登录的网站,一旦访问它,就会弹出一个需要用户名和密码的弹出窗口。现在我有一个非常粗略的想法,如果它不是弹出窗口我将如何做到这一点,但因为我不知道如何看到窗口的HTML代码,我不知道什么放入driver.findElement(By.id(""))。
如果这太模糊,请提前抱歉。
答案 0 :(得分:0)
您可以遍历打开的窗口(包括弹出窗口)并切换到所需的窗口(在您的情况下为弹出窗口)。之后,您可以使用选择器查找所需的元素并输入登录凭据。
示例:
WebDriver driver = ...
String parentWindowHandle = driver.getWindowHandle();
String popupWindowHandle = null;
Iterator<String> iterator = driver.getWindowHandles().iterator();
while (iterator.hasNext()) {
popupWindowHandle = iterator.next();
}
driver.switchTo().window(popupWindowHandle);
答案 1 :(得分:0)
所以它不是弹出窗口,它的基本身份验证。
目前,selenium不支持基本的HTTP身份验证(link to issue),但有一些解决方法。
在Chrome驱动程序和Firefox驱动程序中,您可以在网址中插入用户名和密码。
实施例: 如果你有这样的网址:http://the-internet.herokuapp.com/basic_auth
用户名和密码均为&#39; admin&#39;
只需将您的网址更改为:
即可http://admin:admin@the-internet.herokuapp.com/basic_auth
Java代码示例:
String username = "admin";
String password = "admin";
String url= "http://" + username + ":" + password + "@the-internet.herokuapp.com/basic_auth";
driver.get(url);
这将自动处理chrome和firefox驱动程序中的基本身份验证。