child 和 parent 的 XPATH 测试字符串值具有空字符串值

XPATH Testing string value of child and parent has empty string value

我在 Selenium 测试中搜索 html,我想通过它的文本 找到 child 只有当 parent 没有文字:

这是HTML:

    <ul>
     <li>
      <div>
      "4"
       <span>630</span>
      </div>
    </li>
    <li>
     <div>

       <span>630</span>
     </div>
    </li>
    <li>
     <div>
     "6"
      <span>630</span>
     </div>
    </li>
   </ul>

选择文本字符串“630”会使用“//span[.='630']”或“//span[text()='630']”产生三个结果,但我只想要那个中间一个空 parent。我已经尝试了很多不起作用的构造 "//span[.='630' and parent::div[.='']]""//span[text()='630' and parent::div[text='']]" 甚至 "//div[text()='']/*[1] | //span[text()='630']" 但这些都会导致 3 个结果或 none.

请注意,虽然 "//span[text()='630'] and .//div[contains(text(),'')]" 检测到 文本,但它 return 是真的,我需要它 return 元素以便我可以点击它。

这对我有用:

//div[@innertext='']/span[text()='630']
//span[text()='630']/parent::div[not(text())]

试试这个。