我使用css来定位元素,我试图避免xpath以防万一,但我遇到了与元素的麻烦。我仍然得到错误:
(node:7516) UnhandledPromiseRejectionWarning: NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":"[name-firstName]"}
它只在xpath上工作,但是我想使用css定位器。在定位元素时避免xpath是一个好的做法吗?谢谢大家!
下面是整个元素:
<input type="text" class="f w-input ng-pristine ng-invalid ng-invalid-required ng-touched" name="firstName" required="" ng-readonly="vm.showLoading" ng-model="vm.formData.firstName" placeholder="Your First Name">
下面是代码试用版:
driver.get("www.examplewebsiteonly.com")
.then(function() {
return driver.wait(until.elementLocated(By.css('[name=firstName]')), 20000)
.then(function(){
driver.sleep(20000)
.then(function(){
return driver.findElement(By.css('[name-firstName]')).sendKeys("FirstName");
})
})
})
3条答案
按热度按时间l5tcr1uw1#
当您拥有
name
属性时,您可以使用我用Selenium提供的
name
选择器替换了css
选择器。rhfm7lfc2#
根据您共享的HTML来识别所需元素,您可以使用以下任一 * 定位器策略 *:
css
:xpath
:ovfsdjhp3#
在两个示例中未使用相同的CSS选择器。更改
至
在第二种情况下。
另外,您的代码看起来过于复杂。您是否尝试过this之类的代码?