【问题标题】:Selenium IDE with XPath to identify cell in table based on other column带有 XPath 的 Selenium IDE 根据其他列识别表中的单元格
【发布时间】:2013-08-07 16:50:24
【问题描述】:

请看下面html的sn-p:

<tr class="clickable">
<td id="7b8ee8f9-b66f-4fba-83c1-4cf2827130b5" class="clickable">
<a class="editLink" href="#">Single</a>
</td>
<td class="clickable">£14.00</td>
</tr>

当 td[1] 包含“Single”时,我试图断言 td[2] 的值。我尝试了以下各种变体:

//td[2][(contains(text(),'£14.00'))]/../td[1][(contains(text(),'Single'))]

我在其他地方成功地使用了类似的符号 - 但在这里无济于事......我认为这取决于 td[1] 具有嵌套元素,但不确定。

有人可以解释我做错了什么吗? :)

干杯!

【问题讨论】:

    标签: xpath selenium ide html-table multiple-columns


    【解决方案1】:

    怎么样:

    //tr[contains(td[1], "Single")]/td[2]
    

    首先选择包含与文本匹配的&lt;td&gt;&lt;tr&gt;,然后选择td[2]

    那么,

    contains(//tr[contains(td[1], "Single")]/td[2], "£14.00")
    

    应该返回True

    或者,更接近您尝试的表达式,您可以测试它是否匹配:

    //tr[contains(td[1], "Single")]/td[2][contains(., "£14.00")]
    

    查看@JensErat 对find xth td with td contains in same tr xpath python 的回答。

    【讨论】:

    • 感谢那是完美的......并且很容易扩展到多个条件列!非常感谢!
    • 很高兴听到。如果您发现答案有用,请考虑接受它。谢谢。
    【解决方案2】:

    为什么不让你自己简单,在你的代码中做 if 语句。伪代码:

    1. 选择顶级tr。
    2. 在 tr 中找到第一个 td,检查它是否包含 Single。
    3. 如果是,则断言它包含 14.00 英镑

    或者,您可以只获取顶级 tr 的文本并对该文本执行检查。

    【讨论】:

    • 这没那么简单;您可以使用单个 xpath 来完成这项工作,而不是使用包括分支在内的六行代码。
    猜你喜欢
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 2022-11-18
    • 2021-04-21
    • 2013-10-19
    相关资源
    最近更新 更多