0

我正在尝试使用 selenium WebDriver 自动化网页。我可以移动到网页,并且可以在父页面上完成所有任务。但是在一个地方,我得到了一个询问用户名和密码的弹出窗口。我无法识别用户名和密码文本框 ID,如何找到元素(文本框)并通过 selenium webDriver 代码发送用户名和密码。

4

4 回答 4

3

您可以使用您的网址尝试此操作,

@Test
public void testlinkedin() throws Exception {
driver.get("https://www.linkedin.com/");  //Use your web URL
driver.findElement(By.linkText("Sign Up")).click();
driver.findElement(By.cssSelector("button.fb-btn")).click();
Thread.sleep(3000);

Set <String>handles = driver.getWindowHandles();//To handle multiple windows
firstWinHandle = driver.getWindowHandle();
handles.remove(firstWinHandle);
String winHandle=handles.iterator().next();
if (winHandle!=firstWinHandle){
     secondWinHandle=winHandle;

driver.switchTo().window(secondWinHandle);   //Switch to popup window
Thread.sleep(2000);

driver.findElement(By.id("email")).clear();
driver.findElement(By.id("email")).sendKeys("Username");
driver.findElement(By.id("pass")).clear();
driver.findElement(By.id("pass")).sendKeys("Password");
driver.findElement(By.id("u_0_2")).click();
driver.findElement(By.name("__CONFIRM__")).click();}

确保将这些字符串变量声明为,

public String firstWinHandle;  
public String secondWinHandle; 
于 2015-10-09T07:35:55.640 回答
0

您需要切换到新的弹出窗口以选择其元素。这是切换到新窗口的示例:

String handle = driver.getWindowHandles().toArray()[1]; // 1代表新窗口,0代表父窗口

driver.switchTo(handle);

现在您可以选择此窗口中存在的元素。

*注意:*要返回原始窗口,您需要再次切换回它0作为索引。

于 2013-08-16T07:37:01.293 回答
0

也许弹出窗口是 HTTP 基本认证站点。如果是这样,那么您不能使用前面答案中所述的窗口句柄,但在这种情况下,您必须将用户名和密码直接发送到 URL 请求:

driver.get("http://username:password@your-test-site.com");
于 2013-08-16T07:48:23.027 回答
0

当我像这样使用它时,它对我来说工作得很好......

    String handle = driver.getWindowHandles().toArray()[1].toString();
    driver.switchTo().window(handle);
于 2015-05-13T07:00:13.620 回答