NoSuchElementError:无此类元素:无法使用WebdriverJS定位元素

时间:2018-08-28 23:58:14

标签: 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>
</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 个答案:

答案 0 :(得分:0)

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

  • 2018 Acura 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
    }
    

答案 1 :(得分:0)

如果遇到需要加载一些元素的情况,请使用类似以下内容的

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

实际上,使用async \ await语法可以使视图更美丽,更清晰,并且不需要使用promiceses