我快把自己逼疯了。
我在一个表单中有三个表单域:
- 客户:必填下拉字段
- 权重:必填文本字段
- 状态:可选文本字段
每个元素都有那个标签。必填字段的标签包含带星号的范围。
我在 Chrome 中使用 Xpather。当我搜索这个时,我收到了 2 个结果,而我应该得到 3 个:
//*[contains(text(),'t')]
这对我来说毫无意义。
正在工作的客户:
<label for='customer-field'>
<span class='required-marker'>*</span>
Customer
<input id='customer-field' type='text' />
</label>
重量,不工作:
<label class='control-label'>
<span id='ctl01_requiredMarker' class='required-marker'>*</span>
Weight
</label>
状态,正在工作:
<label class='control-label'>
Status
</label>
唯一对我有用的解决方法是从重量标签容器中删除所需的标记。但是,这根本无法解释“客户”是如何匹配的。
注意:我正在尝试自动测试此页面,因此我无法真正删除该 span 标记。
这是怎么回事?和/或我该怎么做?
最佳答案
尝试将您的 XPath 更改为以下内容:
//*[text()[contains(.,'t')]]
source这个修复程序的分解比我做的要好得多,所以请引用它以获得详细解释!我已经使用 Firefox 的 XPath Checker 扩展亲自对其进行了测试,它与您的三个项目相匹配。
关于selenium - 当标签包含多个文本时无法按文本选择标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22178239/