【问题标题】:Can't locate an href element with selenium python无法使用 selenium python 找到 href 元素
【发布时间】:2021-10-04 15:02:15
【问题描述】:

所以这是我要点击的元素:

<a href="javascript:void(0);" class="logged_time" id="logged_2021-09-01" presence_id="q25474p2842324" user="haha" date="2021-09-01" worked="8:00" user_ad="hahaha" token="irrelevant" action="log">0:00</a>

不能使用href,因为它与许多其他元素相同,我想要的是通过它的 id 单击它,但我的代码不起作用: 这是我的代码:

browser.find_element_by_xpath('//*[@id="logged_2021-09-01"]').click()

这是错误:

消息:没有这样的元素:无法找到元素:{"method":"xpath","selector":"//*[@id="logged_2021-09-01"]"}

更新: enter image description here

更新 2: 我的代码有效,问题是我试图用 IDLE 控制台运行它。我认为一旦您通过调用browser = webdriver.Chrome() 打开浏览器,您就可以手动导航到任何地方,同时保持浏览器对象可用。

【问题讨论】:

  • 你能分享更多的 HTML 代码吗?
  • 我加了一张图,够吗?
  • 提供足够的等待以正确加载表格元素。您可以尝试像 WebDriverWait 一样显式等待。

标签: python selenium xpath


【解决方案1】:

尝试使用以下代码。它将尝试专门查找&lt;a&gt; 标签并搜索以“logged_”开头的id。 id 可能会在您登录的每一天都发生变化,因此不对日期进行硬编码可能会在将来为您节省一些时间。还可以使用 WebDriverWait 来避免在页面加载之前搜索元素。否则将找不到该元素,因为该页面/元素尚未加载。

try: 
    xpath = '//a[contains(@id, "logged_")]'
    WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, xpath)))
              
    element = browser.find_element_by_xpath(xpath)

    element.click()

except:
    # Ideally you catch each error separately; TimeoutException, NoSuchElementException, ...
    pass

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2022-09-30
    • 2016-07-02
    • 1970-01-01
    相关资源
    最近更新 更多