java试图在页面上定位文本元素
我有一个动态创建的汽车类型列表,生成在一个页面上
我希望能够通过文本字符串定位元素,并单击它旁边的复选框(双击文本将产生相同的结果)
我目前正在使用:
//select car makes
Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.xpath("//div[@id='MakesList']/label[2]/i"))).doubleClick().build().perform();
但这是非常脆弱的。。并不总是选择我想要的选项
所以我试着用“阿尔法·罗密欧”这个词:
action.moveToElement(driver.findElement(By.xpath("//label[contains(.,' ALFA ROMEO ')]"))).doubleClick().build().perform();
但我没有选择这个选项
以下是html:
<label class="c-option c-option-search--right u-px u-py-sm u-bb u-m-0 ng-binding ng-scope" ng-repeat="item in label.buckets" ng-class="{ 'u-bg-faded u-text-muted u-disabled' : sc.doc_count[label.id + item.key] == 0 }"><input type="checkbox" name="capMakeName" value="alfaromeo" checklist-value="item" ng-model="checked" class="ng-scope ng-pristine ng-untouched ng-valid" checklist-model="sc.searchCriteria.selected.makes">
<i class="c-option__checkbox"></i> ALFA ROMEO <span class="u-text-muted u-text-80 ng-binding">(9)</span>
</label>
欢迎指点
# 1 楼答案
在html中有:
如果您的最终目标是单击复选框,您可以使用以下信息来实现:
# 2 楼答案
您可以尝试将所有复选框作为列表,然后单击包含所需文本的复选框