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