首页 > 解决方案 > Selenium Xpath 使用 gettext() 方法中的值不起作用

问题描述

我的应用程序中有以下 html 元素。

  <td height="25">
&nbsp;&nbsp;&nbsp; 
 <i>text1</i>
text2
  </td>

我的目标是为我的测试脚本获取 td 元素。为此,我使用以下元素的 getText 方法获取了 td 标记内的文本。

xpath = "//td/i[contains(text(),'text1')]/parent::td"

该方法返回以下文本(以空格开头)

      text1 text2

所以我将该文本复制到下面的 xpath 中以获取 td 元素。

xpath = "//td[contains(text(),'text1 text2')]"

但是,我得到了上述元素的 NosuchElement 异常。这怎么可能?

注意:我不能在我的脚本中使用第一个 xpath,因为有几个像这样的 td 元素,它们有一个常见的 i 标签 text(text 1) 但不同的 td 标签 text(text2, text3...)

标签: selenium-webdriverxpath

解决方案


Selenium 捕获WebElement,它保存元素和所有子元素文本。在这种情况下,<td>元素文本是和的组合&nbsp;&nbsp;&nbsp;,因此当您使用第一个表达式获取文本时,您会得到。但是,DOM 中没有元素 text属于该元素。尝试text1text2text1 text2text1 text2text1<i>

//i[contains(text(),'text1')]/parent::td[contains(text(),'text2')]

推荐阅读