WebDriver找不到'java script pop up'中的元素

时间:2013-06-07 10:51:17

标签: selenium webdriver selenium-webdriver

能够在默认内容中找到元素。但是当我尝试在弹出的javascript中找到一个元素时,webdriver会挂起。我试过wait.until(ExpectedConditions),但没有用。我也试过了isDisplayed()。但仍无法找到。这是我的编码:

WebElement LoginMbno=driver.findElement(By.xpath(".//*[@id='txtUserMobile']"));

if(LoginMbno.isDisplayed())
{
    System.out.println("Avialable");
}
else 
{
    System.out.println("Not");
}

LoginMbno.sendKeys(new String[]{"9944097094"});
WebElement LoginPwd=driver.findElement(By.xpath(".//*[@id='txtPassword']"));
LoginPwd.sendKeys(new String[]{"123456"});
WebElement LoginBtn=driver.findElement(By.xpath(".//*[@id='btnLogin']"));
LoginBtn.click();

4 个答案:

答案 0 :(得分:0)

注意:我没有更正ID或其他内容,只是明确了Java。

这就是你的代码的样子:

WebElement loginMbno=driver.findElement(By.id("txtUserMobile"));

if(loginMbno.isDisplayed()) {
    System.out.println("Available");
}else {
    System.out.println("Not");
}

LoginMbno.sendKeys("9944097094");
WebElement loginPwd=driver.findElement(By.id("txtPassword"));
loginPwd.sendKeys("123456");
WebElement loginBtn=driver.findElement(By.id("btnLogin"));
loginBtn.click();

在开始使用不同的API之前,也许你应该学习一些java基础知识

答案 1 :(得分:0)

您所指的JavaScript弹出窗口通常被称为灯箱。我对你遇到问题的猜测是,看起来场的可见性取决于似乎被记住的单选按钮的设置。

我建议如下:

WebElement signIn = driver.findElement(By.xpath("//a[.='User/Agent Sign In']")); 
signIn.click(); 
WebDriverWait wait = new WebDriverWait(driver, 15, 100); 
WebElement loginLightbox = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("exestylepopup")));
WebElement userType = loginLightbox.findElement(By.id("rbtnLogin_0"));
userType.click(); 
WebElement mobile = loginLightbox.findElement(By.id("txtUserMobile")); 
WebElement password = loginLightbox.findElement(By.id("txtPassword"));

上面的代码很详细,以便您可以看到正在发生的事情。

此代码使用WebDriver等待查找元素而不是使用isDisplayed(如果元素不存在,则isDisplayed将出错,我提供的代码不会出错并将等到元素存在且可见)。我还使用灯箱WebElement作为在查找灯箱中的元素时进行搜索的父级,这比扫描整个页面的性能要高一些。

答案 2 :(得分:0)

单击loginBtn后,您可以尝试使用driver.switchTo()。activeElement(); 这帮助我摆脱了类似的问题

答案 3 :(得分:0)

最后我得到了解决方案。我的webdriver无法找到弹出元素的原因是,网页中有一个Facebook插件。因此,webdriver正在等待来自www.facebook.com的回复,并且没有来自Facebook.com的回复,因为它在我的PC中被阻止了。现在我解锁了facebook.com,一切正常。感谢所有试图帮助我摆脱困境的人。