即使在selenium webdriver中使用switchto frame,也无法在iframe中找到元素

时间:2017-09-10 09:06:25

标签: selenium iframe selenium-webdriver

我有一个网页,里面有电子邮件,密码和登录按钮。

我的目标是首先等待页面加载,然后检查元素(电子邮件字段)是否可见。然后在其中插入数据并继续。

当我使用firepath和控制台检查后,我发现网页上有iframe,并且这些字段位于框架内。

所以我使用了以下代码:

getWrappedDriver().switchTo().frame(0);
getWrappedDriver().waitForElementClickable(String locator);

但这没有用,虽然当我运行代码时网页上出现了该元素,但我的webdriver仍无法找到该元素

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

正如您在其中一条评论中提到的,在网址https://www.sandbox.paypal.com/signin上似乎所有WebElementsemailpasswordlogin_button都在Top Window。因此,您无需切换到任何frame。这是工作代码块:

package demo;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Q46139002_login 
{
    public static void main(String[] args) throws Exception 
    {
        System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver(); 
        driver.get("https://www.sandbox.paypal.com/signin");
        driver.findElement(By.xpath("//input[@id='email']")).sendKeys("email_id");
        driver.findElement(By.xpath("//input[@id='password']")).sendKeys("password");
        driver.findElement(By.xpath("//button[@id='btnLogin']")).click();
    }
}