【问题标题】:Find Xpath to an element depending on the value of another element in a table row根据表格行中另一个元素的值查找一个元素的 Xpath
【发布时间】:2020-06-11 15:33:24
【问题描述】:

我是 Xpath 的新手,所以如果这不包含所有相关信息,请向我道歉并告诉我你需要什么来解决它。

我正在尝试查找“展开箭头”元素的 Xpath,该元素用于展开表格中的一行。 “展开箭头”元素不是唯一的,所以我想根据同一行上另一个元素中包含的文本来选择它。布局如下:

<td id="__table2-rows-row10-col0">
    <div class="sapUiTableCellFlex">
        <span id="__table2-rows-row10-    treeicon" title="Expand Node" role="button">
        <div id="__hbox27-__clone101">
            <div id="__data70-__clone101">
            <div id="__data71-__clone101">
                <span id="__text47-__clone101" title="sys-admin">sys-admin</span>

我想选择 title = "Expand Node"

的元素

&lt;span id="__table2-rows-row10-    treeicon" title="Expand Node" role="button"&gt;

基于标题或文本 = "sys-admin"

的元素

&lt;span id="__text47-__clone101" title="sys-admin"&gt;sys-admin&lt;/span&gt;

我尝试过各种选项,但似乎无法让它发挥作用。任何想法将不胜感激!

谢谢

【问题讨论】:

    标签: selenium selenium-webdriver xpath xpath-1.0


    【解决方案1】:

    相对于 titletext 为的元素定位以 title扩展节点 的元素sys-admin您可以使用以下任一Locator Strategies

    • xpathtitle 属性:

      "//span[@title='sys-admin']//ancestor::span[@title='Expand Node']"
      
    • xpathtext() 属性:

      "//span[text()='sys-admin']//ancestor::span[@title='Expand Node']"
      

    【讨论】:

    • 感谢您的回复。抱歉,我原来的 sn-p 中的缩进不正确,所以我更新了原文。我在此期间找到了一个解决方案并在下面添加了它。再次感谢。
    • @RCS 当您可以调整 HTML 以进行测试时,HTML 的缩进并不重要。我的回答仍然有效,因为ancestor 也确实考虑了../../preceding-sibling
    【解决方案2】:

    我最终使用以下 xpath 让它工作:

    //span[@title='sys-admin']/../../preceding-sibling::span[@title='Expand Node']

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      相关资源
      最近更新 更多