【问题标题】:Select a button with selenium with same XPATH but no tag or id选择一个带有相同 XPATH 但没有标签或 id 的 selenium 按钮
【发布时间】:2021-08-01 21:47:32
【问题描述】:

我想在网上选择一个带有 selenium 的按钮,这里是按钮的 HTML 代码:

<button type="button" ng-if="grid.appScope.edit_column" ng-click="grid.appScope.executeActionButtonEvent(row, grid.appScope.edit_column, grid['options'])" class="btn btn-default ng-scope" aria-label="Left Align">
                <span class="glyphicon glyphicon-edit glyphicon-align-left" aria-hidden="true"></span>
        </button>

它们是 1 到 5 并且具有相同的 XPATH://html/body/div[2]/div/section/section/div[1]/div/div[2]/div[1]/div[2]/div[2]/div/div[2]/div/div[1]/div/button[1]

如何在 HTML 代码中选择没有标签的第三个或第二个按钮?

【问题讨论】:

    标签: python html selenium google-chrome webdriver


    【解决方案1】:

    如果这些按钮中的 ng-click 属性值对于每个元素都是唯一的,您可以使用如下内容:
    //button[contains(@ng-click.'grid.appScope.executeActionButtonEvent(row, grid.appScope.edit_column, grid['options'])')]grid.appScope.executeActionButtonEvent(row, grid.appScope.edit_column, grid['options']) 值的任何唯一部分。
    如果所有 5 个按钮元素的这些值都相同,则可以使用以下值:
    (//button[contains(@ng-click.'grid.appScope.executeActionButtonEvent(row, grid.appScope.edit_column, grid['options'])')])[3] 用于第三个元素。
    通常,您可以在此表达式的末尾添加从 1 到 5 的索引。

    【讨论】:

    • 第一个答案有效,但谢谢我将你的答案添加到我的一个笔记中,以防我其他时间有相同的 pb:D
    • 第一个答案在技术上是可行的。可能是。但它使用绝对的xpath 是绝对错误的!强烈不推荐。这就是为什么我试图建议可能工作的相对路径。
    • 我必须在我的代码中使用你的答案,HTML 是:SA-APD-T002S00_20211105.zip,所以要写; //button[contains(@ng-click.'downloadDocument(document)')] ?
    • 为了给你一个正确的答案,我必须看到整个页面的 HTML,最好是页面本身。在许多情况下,定义定位器的正确方法是基于一些它的父级和自身。这样你就可以捕捉到一些清晰独特的表达方式
    【解决方案2】:
    driver.find_elements_by_xpath("//html/body/div[2]/div/section/section/div[1]/div/div[2]/div[1]/div[2]/div[2]/div/div[2]/div/div[1]/div/button[1]")[2]
    

    您可以使用 find_elements 代替 find_element。然后就可以得到结果的2.index了。

    【讨论】:

    • 如果您将使用 find_elements 而不是 find_element,则必须使用 2 索引来获取第三个元素,即 ideces 从 0 到 4。如果您在 xpath 本身中使用索引,则索引来自1比5!
    猜你喜欢
    • 1970-01-01
    • 2020-06-17
    • 2019-07-28
    • 2019-11-08
    • 2021-01-19
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 2021-02-18
    相关资源
    最近更新 更多