Java “错误”;没有此类元素:无法定位元素“;

Java “错误”;没有此类元素:无法定位元素“;,java,selenium,Java,Selenium,我在这一页 并尝试通过以下web元素代码访问电子邮件字段: public static WebElement Email_Field(WebDriver driver) throws InterruptedException { //element = (new WebDriverWait(driver, 10)).until(ExpectedConditions //.visibilityOfElementLocated(By.xpath("

我在这一页

并尝试通过以下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)

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

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

考虑更新HTML DOM。感谢您的错误告诉您有关元素
//*[@id='fm-login-id']
,但我可以在您的代码中看到
//输入[@id='fm-login-id']
。为什么会有差异?他寻找的信息在
iframe
中-可能是随后加载的帧。考虑等待DoMeCad事件等。请咨询您的Web驱动程序API。请阅读摘要:这不是一个理想的方式来解决志愿者的问题,并且可能对获得答案产生反作用。请不要将此添加到您的问题中。