【问题标题】:Error "no such element: Unable to locate element"错误“没有这样的元素:无法找到元素”
【发布时间】:2017-12-08 23:29:02
【问题描述】:

我在这个页面上

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

并尝试通过以下 web 元素代码访问电子邮件字段:

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)

【问题讨论】:

标签: java selenium


【解决方案1】:

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

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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    相关资源
    最近更新 更多