【问题标题】:Xpath to get element having specific tag in nearest surrounding relative to given elementXpath 以获取在相对于给定元素最近的环境中具有特定标签的元素
【发布时间】:2017-09-28 10:47:07
【问题描述】:

我有一个带有id 的元素,比如uniqueId 它周围有各种标签,我想在它最近的地方获取特定标签。

这是一个例子:

<div>
    <div>
        <input> </input>
    </div>
    <div>
        <form>
            .
                .
                <input id="uniqueId"> </input>
                .
            .
        </form>
    <div>
</div>

如果我有说id="uniqueId" 的xpath,我想说最近的input 标签。

我尝试过类似的东西 &lt;ancestor-siblings&gt;::[@tag="input"] 和 //*[@id="uniqueId"]/parent::following-sibling::input

或类似//*/input/*/[@id="uniqueId"]

我必须在 Selenium 中使用它。

我浏览了各种 Xpath 备忘单,但无法达到我的要求。

【问题讨论】:

  • “最近的”到底是什么意思?另外,&lt;ancestor-siblings&gt; 是什么?最重要的是,反斜杠在 XPath 中不起作用。您的任何尝试在语法上都不是有效的。你还没有尝试任何东西,一分钟都没有。
  • @Tomalak:最近的意思是,如果我们从我们拥有的元素的 xpath 遍历 DOM,它必须是最近的。 &lt;ancestor-siblings&gt; 那是我只是在问我们是否有任何方法可以做这样的事情。我纠正了斜线的事情
  • 从带有 id 的输入标签中,您需要向上移动至少两级才能到达 div (或者最好使用祖先::form 并向上移动一级),然后使用previous-sibling 来获取到它上面的div,然后在其中获取输入标签。此外,您尝试使用 parent::following... 的 xpath 会给您一个语法错误。

标签: javascript html selenium xpath


【解决方案1】:

这将为[@id='uniqueId'] 元素找到第一个preceding input。您可以尝试使用 following:: 代替。

//*[@id='uniqueId']/preceding::input[1]

这是你问的吗?

【讨论】:

  • 正是我在寻找的。我也想出了类似的东西://*[@id="professional"]/ancestor::div[@data-bind="ojModule: dynamicConfig()"] 或 //*[@id="professional"]/../../../../../../../../descendant::input[@type="text"] 但你的解决方案是现场的。
猜你喜欢
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
相关资源
最近更新 更多