通过文本查找元素,获取 xpath 并放入列表中,因为每个 td 都是一个唯一元素 - selenium webdriver junit

Find an element by text, get xpath and put in a list as every td is a unique element - selenium webdriver junit

我有一个带有 thead 和 tbody 的动态生成的 table。这是示例:

<tbody id="tableId" class="someclass1">
<tr id="rowId1" class="somesubclass">
<td id="item1" class="othersubclass">
    <span class="attr">john Doe</span>
<td id="item2">
    <span class="attr">55</span>
<td id="item3">
    <span class="attr">5 street</span>
<td id="item2">
    <span class="attr">cat</span>
<tr id="rowId2" class="somesubclass2">
<td id="item1" class="othersubclass2">
    <span class="attr">joe smith</span>
<td id="item2">
    <span class="attr">60</span>
<td id="item3">
    <span class="attr">2 street</span>
<td id="item2">
    <span class="attr">dog</span>

|小母鹿|55|5 街|猫| |joe foo|60|1 条街|狗|

我想通过文本定位名称为 joe doe 的行并将其放入列表中。

Locatior 正在使用它,但它不是列表。

@FindBy(xpath = "//tbody[contains(@id,'tableId')]/tr[td//text()[contains(.,'joe doe')]]")
private List<WebElement> list;

我得到了列表,但我无法遍历,因为所有内容都像这样放在第一个位置:

列表第一个元素是:joe doe 55 5 street cat 所以这是 [0] 元素

如何将此行定位为列表,其中每个 td 都是列表中的唯一元素。

(迭代、转换为字符串等不是问题,只是定位器。)

谢谢!

我不明白 -1 是什么意思。无论如何,这是其他人的答案,希望对您有所帮助!

有一个很好的 google kinda firepath 插件:SelAssist,我用它来测试我的 xpath 定位器。

问题是,td 不见了。所以正确的定位器是

//tbody[contains(@id,'tableId')]/tr[td//text()[contains(.,'joe doe')]]/td

它给了我元素列表,而不仅仅是一个。

干杯!