【问题标题】:Python Selenium Button click has no effectPython Selenium 按钮单击没有效果
【发布时间】:2019-08-19 22:51:47
【问题描述】:

我正在尝试从 Seeking Alpha 下载文章。由于很多文章都是订阅者专有的,所以我必须先登录才能查看和下载这些文章。我使用的代码提供如下。我遇到的问题是click() 没有效果。当我手动登录时,它运行良好。

# open website
url_lib = 'https://seekingalpha.com'
driver.get(url_lib)

# sign in
sign_in = driver.find_element_by_id('sign-in')
sign_in.click()

# id and pw
sign_id = driver.find_element_by_id('authentication_login_email')
sign_id.send_keys(Email address)
time.sleep(2)

sign_pw = driver.find_element_by_id('authentication_login_password')
sign_pw.send_keys(Password)
time.sleep(2)

# click submit button
submit_button = driver.find_element_by_id('log-btn')
submit_button.click()

任何建议将不胜感激!提前致谢!

【问题讨论】:

  • 也许试试submit_button.submit() 而不是submit_button.click()
  • @C.Peck 它不起作用...原因可能是我被网站认为是机器人,因为我实际上在“控制台”中遇到了错误(“加载资源失败:服务器 [...] 使用 Webdriver 响应状态为 403")。我想我需要想办法绕过它......

标签: python-3.x selenium selenium-webdriver css-selectors webdriverwait


【解决方案1】:

所需的元素是启用了JavaScript 的元素,因此您必须为所需的element_to_be_clickable 诱导WebDriverWait,您可以使用以下解决方案:

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
    options = webdriver.ChromeOptions()
    options.add_argument("start-maximized")
    # options.add_argument("disable-infobars")
    options.add_argument("--disable-extensions")
    driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
    driver.get("https://seekingalpha.com")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a#sign-in"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.form-control#authentication_login_email"))).send_keys("AnnieQW")
    driver.find_element_by_css_selector("input.form-control#authentication_login_password").send_keys("AnnieQW")
    driver.find_element_by_css_selector("input.orange-btn[value='Sign in']").click()
    
  • 浏览器快照:

【讨论】:

  • 感谢您的解决方案!但是如果您单击“登录”它仍然不起作用,因为我仍然被检测为机器人。只要页面被webdriver打开,网站就会把你当成机器人。我只需要通过所有的“测试”然后被清除......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-18
  • 1970-01-01
  • 2021-12-04
  • 2023-03-31
  • 1970-01-01
  • 2019-02-27
  • 1970-01-01
相关资源
最近更新 更多