【问题标题】:Selenium Python XPath Find Element that has a child/grandchildSelenium Python XPath 查找具有子/孙的元素
【发布时间】:2021-07-14 21:02:05
【问题描述】:

我是 Python Selenium 的新手,并尝试在以下 DOM 结构中选择 ui-button 标记:

...
<div>
    <ui-button>
        <button type='submit'>TEST</button>
    </ui-button>
</div>

这个文档中有很多我没有包含的 HTML,所以我知道一个有效的 XPath 语句可以完成这个,但不知道怎么做。

页面中有多个ui-button标签,但只有一个带有child button type='submit',目标是点击带有selenium的ui-button标签。没有其他简单的方法可以识别这些标签。所以我正在做的是使用 css 选择器选择提交按钮,然后使用 XPath 上升 1 个父级,但我需要能够使用单个语句选择 ui 按钮。

这是我最好的尝试:

"./ui-button/input[@type='submit']"

我正在尝试选择带有“提交”类型的子输入按钮的 ui 按钮。

提前致谢

【问题讨论】:

    标签: python selenium xpath


    【解决方案1】:

    要根据 type='submit' 的子节点选择父节点 ui-button,您可以使用以下任意 XPath:

    //ui-button[./button[@type='submit']]
    

    //button[@type='submit']/..
    

    //button[@type='submit']/../..//ui-button
    

    但这一切对我来说似乎很奇怪,通常你必须点击button元素,而不是像ui-button这样带有奇怪标签名称的元素。
    但是,如果 &lt;button type='submit'&gt;TEST&lt;/button&gt; 不是 ui-button 元素的直接子元素,则您只能使用上述 3 中的一个选项,只需稍作更改:

    //ui-button[.//button[@type='submit']]
    

    这意味着:页面某处带有ui-button标签名称的元素在其中某处有一个匹配//button[@type='submit']定位器的元素

    【讨论】:

    • 谢谢,非常感谢。而且我知道将来,如果我知道 ui-button 标签有一个子
    • @GeoffL 我回答你的问题了吗?
    【解决方案2】:

    为了获得完整的 XPath,您可以转到 chrome,只需右键单击 -> Inspect 即可转到 chrome 开发人员工具。然后您可以右键单击 HTML 中的元素,转到复制,然后单击复制完整 XPath。然后你可以使用 find_element_by_xpath(XPath goes here) 来查找元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 2019-11-30
      • 1970-01-01
      相关资源
      最近更新 更多