gpt4 book ai didi

java - Selenium 找不到元素

转载 作者:行者123 更新时间:2023-12-03 23:54:43 26 4
gpt4 key购买 nike

这是 HTML: https://www.dropbox.com/s/aiaw2u4j7dkmui2/Untitled%20picture.png

我不明白为什么这段代码找不到页面上的元素。该网站不使用 iframe。

@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"}

最佳答案

这是时间问题吗?元素(或整个页面)是否加载了 AJAX?当您尝试查找它时,它可能没有出现在页面上,WebDriver 通常“太快了”。

要解决它,要么 implicit or explicit wait .

隐式等待方式。由于隐式等待设置,如果元素没有立即出现(这是异步请求的情况),这将尝试等待该元素出现在页面上,直到它超时并像往常一样抛出:

// 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();
...
}

关于java - Selenium 找不到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17853450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com