Java “错误”;没有此类元素:无法定位元素“;
我在这一页 并尝试通过以下web元素代码访问电子邮件字段: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("
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。请阅读摘要:这不是一个理想的方式来解决志愿者的问题,并且可能对获得答案产生反作用。请不要将此添加到您的问题中。