selenium - 当标签包含多个文本时无法按文本选择标签

标签 selenium xpath

我快把自己逼疯了。

我在一个表单中有三个表单域:

  1. 客户:必填下拉字段
  2. 权重:必填文本字段
  3. 状态:可选文本字段

每个元素都有那个标签。必填字段的标签包含带星号的范围。

我在 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/

相关文章:

selenium - 使用 Selenium 通过 optgroup 选择 select 上的选项

asp.net - 何时在XmlDocument或XmlTextReader上使用XPath?

selenium - 不同浏览器的XPATH不同

javascript - 如何在 Javascript 中找到第一个共同的 XPath 祖先?

javascript - XPath 选择在 Microsoft Edge 中不起作用(在 Chrome 和 Firefox 中有效)

java - HtmlUnit 2.8 getFirstByXPath 与 HtmlUnit 1.14 getFirstByXPath 不同吗?

c# - 我必须使用什么驱动程序才能在 Edge Chromium 浏览器上的 c# 中运行 selenium 测试?

jquery - 如何在 scrapy 中使用 selenium 驱动程序单击第二个链接(使用 python)

java - Selenium Webdriver java 自动化窗口

Selenium 框架和 json 中的测试数据