Java 硒找不到元素
这是HTML: 我不明白为什么这段代码在页面上找不到元素。该网站不使用iFrameJava 硒找不到元素,java,eclipse,selenium,webdriver,selenium-webdriver,Java,Eclipse,Selenium,Webdriver,Selenium Webdriver,这是HTML: 我不明白为什么这段代码在页面上找不到元素。该网站不使用iFrame @Test public void Appointments() { driver.findElement(By.id("ctl00_Header1_liAppointmentDiary")); } 这是我收到的错误消息: FAILED: Appointments org.openqa.selenium.NoSuchElementException: Unable to locate element:
@Test
public void Appointments() {
driver.findElement(By.id("ctl00_Header1_liAppointmentDiary"));
}
这是我收到的错误消息:
FAILED: Appointments
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"ctl00_Header1_liAppointmentDiary"}
您正在搜索
ctl00\u Header1\u liappointdiary
,但只有Header1\u liappointdiary
,它们不一样
ctl00\u Header1\u liappointmentdialog!=校长1_Liappoints日记
html中没有带有id=“ctl00\u Header1\u liAppointmentDiary”
的元素
driver.findElement(By.id("ctl00_Header1_liAppointmentDiary"));
应该是
driver.findElement(By.id("Header1_liAppointmentDiary"));
试一试
driver.findElement(按.ClassName(“My约会”)代码>
如果webdriver无法通过xpath或id找到元素,那么最好尝试所有可行的by选项
查看代码,我认为您试图单击的链接位于下拉列表下,或者您需要将鼠标悬停在某个地方才能看到此链接。如果是这样,则必须使元素可见以执行操作。这是时间问题吗?元素(或整个页面)是否加载了AJAX?当您试图查找它时,它可能不在页面上,WebDriver通常“太快”
要解决它,要么
隐式等待方式。由于隐式等待集,如果元素没有立即出现(异步请求的情况下),则会尝试等待元素出现在页面上,直到它超时并像往常一样抛出:
// Sooner, usually right after your driver instance is created.
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Your method, unchanged.
@Test
public void Appointments() {
...
driver.findElement(By.id("ctl00_Header1_liAppointmentDiary")).doSomethingWithIt();
...
}
显式等待方式。在查找时,这将只等待这一个元素出现在页面上。使用ExpectedConditions
类,您也可以等待不同的事情-元素可见、可单击等:
import static org.openqa.selenium.support.ui.ExpectedConditions.*;
@Test
public void Appointments() {
...
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(presenceOfElementLocated(By.id("ctl00_Header1_liAppointmentDiary")))
.doSomethingwithIt();
...
}
屏幕截图没有显示任何id为ctl00\u Header1\u liAppointmentDiary
的元素,是吗?有Header1\u liappointdiary
但是…图像上的id是Header1\u liappointdiary而不是ctl00\u Header1\u liappointdiary加载的元素是AJAX吗?你也尝试过等待吗?链接当前已断开。你能修好吗?我也试过了,但是我收到了同样的错误信息。我已经尝试通过xpath使用findElement,但是我得到了相同的错误,如果它只是不可见的,那么仍然可以找到元素。它不会抛出一个NoTouchElementException
。当您尝试与元素交互时,它会抛出ElementNotVisibleException
。我也希望如此,但我今天也遇到了同样的情况。在我向下滚动页面使其可见之前,不会检测到该元素。