提问者:小点点

如何使用Selenium和Python通过链接文本单击按钮


我知道,有很多关于这个任务的教程。 但我好像做错了什么,我需要帮助,告诉我怎么按,不需要用短信。

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秒后找不到该按钮。 我可能是用错误的方式访问按钮。


共1个答案

匿名用户

要单击带有文本的元素作为login或register,您必须让WebDriverWait等待element_to_be_clickable(),您可以使用以下两种定位器策略:

>

  • 使用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:

    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