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