想通过定义的名称定位元素,
我使用以下contains
语法,但没有实现目标元素
String deviceName = "AutoTest";
driver.findElement(By.xpath("//a[@class='noDecoration addPointer'][contains(text(),'"+deviceName+"')]"));
正如我们所看到的,第一个数据包含在变量中给出的值。每次取第一个元素,它在其中找到相同的值。但是,我想找到具有定义值的元素。如何追查?
HTML :
<div class="deviceName truncate">
<a class="noDecoration addPointer" ng-if="itemDeviceType" ng-href="" href="">AutoTest</a>
</div>
根据您共享的HTML,它似乎是一个Angular元素,因此要找到您必须引入WebDriverWait的元素。现在,如果您要以类似的方式多次识别元素,您可以创建一个function()
接受String
例如AutoTest以定位所需元素的 a ,如下所示:
public void locateElement(String deviceType)
{
WebElement elem = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='deviceName truncate']/a[@class='noDecoration addPointer'][normalize-space()='" + deviceType + "']")));
//you can do anything with the element
}
现在,您可以String
随时随地使用所需的参数调用此函数,如下所示:
locateElement("AutoTest")
locateElement("AutoTest003")
locateElement("AutoTest032")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句