如何使用selenium WebDriver将文本插入弹出窗口

时间:2013-08-16 07:24:16

标签: java selenium webdriver

我正在尝试使用selenium WebDriver自动化网页。我可以转向网页,并能够在父页面上执行所有任务。但在一个地方我得到一个POPUP窗口,询问用户名和密码。我无法识别用户名和密码文本框ID,如何找到元素(TextBox)并通过selenium webDriver代码发送用户名和密码。

4 个答案:

答案 0 :(得分: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; 

答案 1 :(得分:0)

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

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

driver.switchTo(handle);

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

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

答案 2 :(得分:0)

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

driver.get("http://username:password@your-test-site.com");

答案 3 :(得分:0)

我工作正常,就像我这样使用......

    String handle = driver.getWindowHandles().toArray()[1].toString();
    driver.switchTo().window(handle);