错误“没有这样的元素:无法找到元素”

时间:2017-07-05 10:33:32

标签: java selenium

我在这个页面上

https://login.alibaba.com/?spm=a2700.8293689.0.0.NdeZUw&tracelog=hd_signin

尝试按照网络元素代码访问电子邮件字段:

public static WebElement Email_Field(WebDriver driver) throws InterruptedException {

        //element = (new WebDriverWait(driver, 10)).until(ExpectedConditions
                //.visibilityOfElementLocated(By.xpath("//input[@id='fm-login-id']")));

        element = driver.findElement(By
                .xpath("//input[@id='fm-login-id']"));

        while (!isDisplayed(element)) {
            Thread.sleep(3000);
            System.out.println("Element is not visible yet");
        }

        return element;
    }


public static boolean isDisplayed(WebElement element) {
        try {
            if(element.isDisplayed())
                return element.isDisplayed();
            }catch (NoSuchElementException ex) {
            return false;
        }
        return false;
    }

但是得到以下异常:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":".//*[@id='fm-login-id']"}
  (Session info: chrome=59.0.3071.115)

1 个答案:

答案 0 :(得分:0)

电子邮件字段位于框架内。在访问框架中的任何元素之前,您必须切换。请尝试以下代码。

public static WebElement Email_Field(WebDriver driver) throws InterruptedException {

    WebElement element;

    (new WebDriverWait(driver, 30)).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("alibaba-login-box"));

    element = driver.findElement(By.xpath("//input[@id='fm-login-id']"));

    while (!isDisplayed(element)) {
        Thread.sleep(3000);
        System.out.println("Element is not visible yet");
    }

    return element;
}
相关问题