【问题标题】:Unable to automate the click of a button in Selenium with Python无法使用 Python 自动单击 Selenium 中的按钮
【发布时间】:2023-04-11 06:06:01
【问题描述】:

我正在尝试自动化网络顾问的登录过程。我试图通过调用不同的元素来选择“登录”按钮。到目前为止,每次尝试都没有成功。

我当前的代码:

path = '.../chromedriver

driver = webdriver.Chrome(path)

url = 'https://webadvisor.barry.edu/

driver.get(url)

以下操作不成功。

driver.find_element_by_id('acctLogin').click()

driver.find_element_by_name('Log In').click()

driver.find_element_by_link_text("Log In").click()

这是与我尝试在 WebAdvisor 网站中单击的按钮相关的代码部分:

预期的结果是登录页面。目前它没有改变页面。

【问题讨论】:

    标签: python selenium automation


    【解决方案1】:

    您的 xpath 错误,请查找以下解决方案。

    from selenium import webdriver
    from time import sleep
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    
    driver = webdriver.Chrome(executable_path=r"chromedriver.exe")
    
    driver.get("https://webadvisor.barry.edu/")
    
    
    element=WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//li[@id='acctLogin']//span[@class='label'][contains(text(),'Log In')]")))
    element.click()
    element0=WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//input[@id='USER_NAME']")))
    element0.send_keys("Test123")
    

    【讨论】:

    • 谢谢摇滚!有用!出于好奇,我用 1 秒测试了它,它仍然有效。我在没有 WebDriverWait 方法的情况下对其进行了测试,但它不起作用。为什么需要 WebDriverWait 方法?
    【解决方案2】:

    诱导WebDriverWaitelement_to_be_clickable() 并跟随定位器启动。

    Xpath

    driver=webdriver.Chrome(path)
    driver.get("https://webadvisor.barry.edu/")
    WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//li[@id='acctLogin']/a[./span[contains(.,'Log In')]]"))).click()
    

    CSS 选择器:

    driver=webdriver.Chrome()
    driver.get("https://webadvisor.barry.edu/")
    WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"#acctLogin >a"))).click()
    

    您需要导入以下库。

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

    浏览器快照:

    【讨论】:

      猜你喜欢
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      相关资源
      最近更新 更多