【问题标题】:How to click on a button by the link text using Selenium and Python如何使用 Selenium 和 Python 通过链接文本单击按钮
【发布时间】:2020-11-15 23:29:31
【问题描述】:

我知道,有很多针对此任务的教程。但是好像我做错了什么,我需要帮助告诉我如何按下它,不需要通过文字。

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

try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.LINK_TEXT, 'login or register'))
    )
    element.click()
except:
    print('exception occured')
    driver.quit()

我正在尝试从网站 wilds.io 按下“登录或注册”按钮,但 10 秒后似乎找不到该按钮。我可能以错误的方式访问按钮。

【问题讨论】:

    标签: python selenium xpath webdriverwait linktext


    【解决方案1】:

    要点击文本为登录或注册的元素,您必须将WebDriverWait 诱导为element_to_be_clickable(),您可以使用以下任一Locator Strategies

    • 使用LINK_TEXT

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "login or register"))).click()
      
    • 使用PARTIAL_LINK_TEXT

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "login or register"))).click()
      
    • 使用XPATH 使用text()

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[text()='login or register']"))).click()
      
    • 使用XPATH 使用contains()

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[contains(., 'login or register')]"))).click()
      
    • 注意:您必须添加以下导入:

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

    【讨论】:

    • 似乎将 XPATH 与 text() 结合使用是唯一对我有用的方法。我将使用它,因为它是单击按钮的解决方案。
    • 另外,您是如何获得 XPATH 的?当我尝试获取它时,我有/html/body/div[5]/div/div[2]/div[5]/div[1]/div[3]/div[1]/span 而不是//*[text()='login or register']
    • @JohnFrames 这些是将 linkText / partialLinkText 转换为 xpath 的通用技术。
    • @JohnFrames 很高兴能为您提供帮助。 Vote up questions and answers 您发现这对未来读者的利益很有帮助。见Why is voting important
    猜你喜欢
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 2023-03-10
    • 2014-07-18
    • 2018-12-27
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    相关资源
    最近更新 更多