【问题标题】:Python/Selenium Identifying an element issuePython/Selenium 识别元素问题
【发布时间】:2022-01-22 09:42:51
【问题描述】:

我正在尝试使用 python 登录网页,但由于某种原因,无论我尝试什么,我都无法获得正确的登录元素,因为我是菜鸟,这是我的第一次尝试。

这应该是网页中的元素:

<label class="">Username</label>
<input type="text" formcontrolname="username" class="form-control ng-pristine ng-invalid ng-touched xh-highlight">

我试过按标签搜索但没有成功:

username = browser.find_element_by_xpath("//label[contains(text(),'Username')]")

我试过按类别搜索:

username = browser.find_element_by_xpath('//input[@class="form-control ng-pristine ng-invalid ng-touched"]')

我尝试过使用 CssSelector 进行搜索:

username = browser.find_element_by_css_selector("input[formcontrolname='Username']")

我什至尝试过完整的道路:

username = browser.find_element_by_xpath("/html/body/app/div[@class='app-container']/ng-component/div[@class='container']/div[@class='row']/div[@class='col']/div[@class='card']/ng-component/div[@class='card-body']/form[@class='ng-pristine ng-invalid ng-touched']/div[@class='form-group'][1]/input[@class='form-control ng-pristine ng-invalid ng-touched']")

我不知道我做错了什么,请帮忙

【问题讨论】:

  • 有几个可能的问题。你能分享一个指向那个页面的链接吗?
  • @Prophet link
  • 这个链接不够用。 1)那里可能有 iframe 2)也许你错过了等待等......

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

要定位 clickable 元素,您需要为element_to_be_clickable() 诱导WebDriverWait,您可以使用以下Locator Strategies 之一:

  • 使用CSS_SELECTOR

    username = WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[formcontrolname='username']"))).click()
    
  • 使用XPATH

    username = WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@formcontrolname='username']"))).click()
    
  • 注意:您必须添加以下导入:

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

【讨论】:

    【解决方案2】:

    有几个可能的问题:

    1. 在您尝试访问元素之前,您可能会错过等待/延迟来加载页面。
    2. 元素可能位于 iframe 内,因此您必须切换到该 iframe 才能访问其中的元素。
    3. 定位器可能不是唯一的。
      为了给出更明确的答案,我们需要查看您正在使用的我们页面以及所有相关代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 2021-12-15
      • 2015-12-12
      • 1970-01-01
      • 1970-01-01
      • 2022-10-18
      • 2021-04-11
      相关资源
      最近更新 更多