【问题标题】:Having issues finding an element to serach by to click on with Selenium使用 Selenium 查找要搜索的元素时遇到问题
【发布时间】:2022-02-02 20:14:59
【问题描述】:

您好,我正在尝试单击一个按钮,该按钮具有我从 chrome 检查中找到的以下 html 结构。

<div class="col-md-9 col-sm-8 col-xs-12">
    <button type="submit" tabindex="3" data-ng-click="login()" class="btn btn-default" data-ng-disabled="loginForm.$invalid" data-ng-class="{ 'gray': loginForm.$invalid }">Login</button>
</div>

我不确定通过什么来查找元素。 ID、名称、XPath 等。

【问题讨论】:

    标签: selenium selenium-webdriver xpath css-selectors webdriverwait


    【解决方案1】:

    我建议在这里使用以下 XPath:

    //button[@data-ng-click="login()"]
    

    但仍需要验证这是否提供了唯一的定位器

    【讨论】:

      【解决方案2】:

      所需元素是Angular元素元素,点击该元素需要诱导WebDriverWait为element_to_be_clickable(),可以使用以下Locator Strategies之一:

      • 使用 和CSS_SELECTOR:

        new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("button.btn.btn-default[data-ng-click='login()'][data-ng-class*='loginForm']"))).click();
        
      • 使用 和XPATH:

        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-default' and @data-ng-click='login()'][text()='Login']"))).click()
        
      • 注意:使用 Python 客户端您必须添加以下导入:

        from selenium.webdriver.support.ui import WebDriverWait
        from selenium.webdriver.common.by import By
        from selenium.webdriver.support import expected_conditions as EC
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-24
        • 1970-01-01
        • 2020-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多