Html 如何按名称选择复选框

Html 如何按名称选择复选框,html,css,selenium,Html,Css,Selenium,我正在努力为我的复选框找到合适的css(或任何pother)定位器。页面上有两个不同的文本具有相同的属性,我不知道如何构建工作选择器。我想避免使用索引。我想通过'Name1'和'Name2' 以下是属性: <label> <input class="some class name" name="checkOptions" type="checkbox">Name1 </label> <labe

我正在努力为我的复选框找到合适的css(或任何pother)定位器。页面上有两个不同的文本具有相同的属性,我不知道如何构建工作选择器。我想避免使用索引。我想通过
'Name1'
'Name2'
以下是属性:

<label>
<input class="some class name" name="checkOptions" type="checkbox">Name1
</label>

<label>
<input class="some class name" name="checkOptions" type="checkbox">Name2
</label>

名称1
姓名2

如果元素的唯一性是它们的文本,则必须根据文本定位它们。
请尝试以下方法:
//第一个元素输入[contains(text(),'Name1')]
,第二个元素输入[contains(text(),'Name2')]。
如果需要添加更多的唯一性,您可以添加类名或任何其他属性,如下所示:
//输入[@class='some class name'和contains(text(),'Name1')]


//输入[@class='some class name'并包含(text(),'Name2')]

在您的示例中,文本位于标签内部(…和外部输入…)

好的,可能的替代方法是使用css“:contains”选择器

对于获取输入:

  $("label:contains('Name1') > input")
请认为此本机函数区分大小写。 备选方案可以创建自定义功能:

$.expr[':'].containsCaseIns = function(a, i, m) {
  return $(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
};

$("label:containsCaseIns('Name1') > input")

“通过不同的名称”-->它们具有相同的名称?对不起,我指的是“显示的文本”,而不是属性“名称”(已更正),可能是这样的:(//输入[text()='Name1'])这是否回答了您的问题?如果您可以使用脚本,那么它可能是
[…document.queryselectoral(“label”)].filter(label=>label.textContent.trim()==“Name2”)[0]。querySelector(“input”).checked=true
此脚本不返回任何定位器,无任何uchelementexception您尝试了什么
xpath
?您确定“Name1”是文本而不是值吗?在搜索元素之前,您是否给予了足够的延迟?另外,我希望您使用的是正确的
By
,即
driver.findElements(By.xpath(//input[contains(text(),'Name1')))
$.expr[':'].containsCaseIns = function(a, i, m) {
  return $(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
};

$("label:containsCaseIns('Name1') > input")