【问题标题】:Selenium in find_element_by_class_namefind_element_by_class_name 中的硒
【发布时间】:2021-02-21 16:19:19
【问题描述】:

我正在按照 youtube 上的指南构建需要登录的网站抓取工具。但是我在点击登录按钮时遇到了问题。

这是我目前使用的代码。它打开了网站,但没有按下登录按钮。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())

url = "https://www.URL.COM"
username = 'username'
password = 'password'

driver.get(url)

driver.find_element_by_class_name("login-top ng-scope").click()

登录按钮的检查如下所示:

有什么解决问题的建议吗?

【问题讨论】:

标签: python selenium web-scraping


【解决方案1】:

似乎是同步问题。

诱导WebDriverWait() 并等待element_to_be_clickable() 并使用以下css selector.

driver.get("https://www.heo.com/")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.login-top.ng-scope > p.log"))).click()

您需要导入以下库。

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

【讨论】:

    【解决方案2】:

    您可以使用find_element_by_xpath 代替find_element_by_class_name。您的案例的 Xpath 将如下所示://div[@data-ng-click='showLogin()']/p

    代码示例:

    driver.find_element_by_xpath("//div[@data-ng-click='showLogin()']/p").click()
    

    【讨论】:

    • 您好,感谢您的评论。我得到了和以前一样的错误。由于此处缺少要粘贴的字符,因此在此处上传照片。 ibb.co/tL1Qp3t
    猜你喜欢
    • 2021-04-11
    • 2021-03-31
    • 2017-11-29
    • 2020-10-24
    • 2012-01-07
    • 2022-06-29
    • 1970-01-01
    • 2017-12-12
    相关资源
    最近更新 更多