【问题标题】:Cannot target the element in Python - Selenium无法在 Python 中定位元素 - Selenium
【发布时间】:2020-05-05 08:46:51
【问题描述】:

我从 Python - Selenium 开始,我无法定位登录网站中的元素。我尝试了许多针对此按钮的选项,但没有选项有效(类名、css 选择器、id、名称..)。当我跳过此步骤并通过确切的 url 手动进入下一页时,查找、聚焦、向元素发送键并单击“下一步”按钮没问题,但这个“欢迎”登录按钮不能完全定位。 使用函数“driver.find_element_by_XXX”。

例如: "driver.find_element_by_class_name("login-box-actions").click()" 请问,我哪里搞错了?

非常感谢, 大卫的问候

<div class="login-box-actions">
                    <a style="cursor: pointer" ng-click="confirmLogin()" class="btn btn-primary btn-block btn-flat ng-binding">Login</a>
                </div>

【问题讨论】:

  • 尝试使用 XPATH。在浏览器上打开开发者工具并尝试复制元素 xpath。

标签: python selenium authentication button target


【解决方案1】:

它可能会因为找不到元素而失败。 为此,您必须等待元素加载并可以点击。

参考下面的例子,等待元素可点击。

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


WebDriverWait(driver, 20).until(EC.element_to_be_clickable(
    (By.CSS_SELECTOR, "btn btn-primary btn-block btn-flat ng-binding"))).click()

【讨论】:

    【解决方案2】:

    您可以尝试使用不同的标识符来查找元素。硒支持:

    find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_element_by_partial_link_text find_element_by_tag_name find_element_by_class_name find_element_by_css_selector

    【讨论】:

      【解决方案3】:

      你需要点击&lt;a&gt;元素而不是div:

      login_button = driver.find_element_by_xpath("//a[text()='Login']")
      login_button.click()
      

      【讨论】:

        猜你喜欢
        • 2020-08-02
        • 2017-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-30
        • 1970-01-01
        相关资源
        最近更新 更多