当前位置: 首页 > 知识库问答 >
问题:

NoTouchElementError:没有这样的元素:无法使用WebdriverJS定位元素

翟弘
2023-03-14

我找不到网页上的元素。我的页面可能有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>

我尝试了一堆在线建议的解决方案,包括下面的解决方案,但总是无法找到元素异常。

await driver.findElements(webdriver.By.className('vehicle-title h5 m-0')).then(async function(elements_arr) {
//some code
}

await driver.findElements(webdriver.By.xpath('//span[contains(@class, "vehicle-title h5 m-0")]')).then(async function(elements_arr) {
//some code
}

共有2个答案

尹钱青
2023-03-14

如果您有这样的情况,当元素需要一些时间来加载时,只需使用类似的方法:

await driver.wait(until.elementLocated(by.xpath("//*[@class='vehicle-title h5 m-0']")), 10000).thenDoSomethingWithTheElement();

实际上,使用async\await语法可以使视图更加美观和清晰,并且不需要提示

蔚元明
2023-03-14

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

> < li>

2018款讴歌MDX:

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
}

2016 ACURA MDX

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
}
 类似资料: