Javascript NoSuchElementError:没有这样的元素:无法使用WebDriverJ定位元素

Javascript NoSuchElementError:没有这样的元素:无法使用WebDriverJ定位元素,javascript,selenium,selenium-webdriver,xpath,webdriver,Javascript,Selenium,Selenium Webdriver,Xpath,Webdriver,我在查找页面上的元素时遇到问题。我的页面可能有0到20个这样的元素。我想定位元素并验证元素的文本 以下是我的要点: <span _ngcontent-c47="" class="vehicle-title h5 m-0"> <a _ngcontent-c47="" href="https://abc-xyz.com/pqr/classic/4183C62C-A7AE-45BA-BAB8-0DD7082A8A30">2018 Acura MDX </a> <

我在查找页面上的元素时遇到问题。我的页面可能有0到20个这样的元素。我想定位元素并验证元素的文本

以下是我的要点:

<span _ngcontent-c47="" class="vehicle-title h5 m-0">
<a _ngcontent-c47="" href="https://abc-xyz.com/pqr/classic/4183C62C-A7AE-45BA-BAB8-0DD7082A8A30">2018 Acura MDX </a>
</span>

<span _ngcontent-c47="" class="vehicle-title h5 m-0">
<a _ngcontent-c47="" href="https://abc-xyz.com/pqr/classic/4183C62C-A7AE-45BA-BAB8-0DD7082A8A28">2016 ACURA MDX </a>
</span>

根据您共享的HTML,您可以使用以下解决方案来定位元素:

2018年Acura MDX:

2016年ACURA MDX:


如果您有case-when元素需要一些时间才能加载,只需使用以下方法:

await driver.wait(until.elementLocated(by.xpath("//*[@class='vehicle-title h5 m-0']")), 10000).thenDoSomethingWithTheElement();
实际上,使用async\Wait语法可以使视图更漂亮、更清晰,而不需要Promices

await driver.findElements(webdriver.By.xpath("//span[@class='vehicle-title h5 m-0']/a[contains(., '2018 Acura MDX')]")).then(async function(elements_arr) {
//some code
}
await driver.findElements(webdriver.By.xpath("//span[@class='vehicle-title h5 m-0']/a[contains(., '2016 Acura MDX')]")).then(async function(elements_arr) {
//some code
}
await driver.wait(until.elementLocated(by.xpath("//*[@class='vehicle-title h5 m-0']")), 10000).thenDoSomethingWithTheElement();