当使用 Selenium 将文本跨越多行时如何通过文本识别元素

How to identify element by text when text is spanned over multiple lines using Selenium

是否可以使用包含文本的 xpath 编写,例如(下面是我想要的但不起作用)

//ul[@role='listbox']/..//span[contains(text(),'Fast-Food Restaurent')] 

页面代码:

<span class="item-title" md-highlight-text="searchText" md-highlight-flags="i">Fast-<span class="highlight">Food</span> Restaurant</span>

当我输入食物这个词时,它是一个自动完成的文本框,有一些选项,我想从中select快餐店。

提前致谢。

您可以 select 需要 span 节点基于其 字符串表示 :

//span[.='Fast-Food Restaurant']

要识别元素,您可以使用以下任一方法 based :

  • 使用文本 食物快速:

    //ul[@role='listbox']/..//span[.//span[text()='Food']][contains(.,'Fast-')]
    
  • 使用文本食物餐厅:

    //ul[@role='listbox']/..//span[.//span[text()='Food']][contains(.,'Restaurant')]
    
  • 使用文本食物快餐餐厅

    //ul[@role='listbox']/..//span[.//span[text()='Food']][contains(.,'Fast-') and contains(.,'Restaurant')]
    

您可以将路径修改为:

//ul[@role='listbox']/..//span[contains(normalize-space(), 'Fast-Food Restaurant')]