【问题标题】:Python selenium select element by classPython selenium 按类选择元素
【发布时间】:2021-07-31 21:01:02
【问题描述】:

我尝试使用 selenium 选择一个元素,但我是初学者。

这是我尝试选择的元素:

<button type="submit" class="btn btn-primary btn-block btn-form">
    Connexion
</button>

我在我的脚本上试过这行:

from selenium import webdriver

driver = webdriver.Chrome(executable_path="chromedriver.exe")
driver.get("https://skysand.fr")

connexion_button = driver.find_element_by_class_name("login")
connexion_button.click()

email_input = driver.find_element_by_id("email")
email_input.send_keys("XXXX")

password_input = driver.find_element_by_id("password")
password_input.send_keys("XXXX")

connect_button = driver.find_element_by_class_name("btn-primary btn-block btn-form")
connect_button.click()

但它不起作用:(

selenium.common.exceptions.ElementClickInterceptedException:消息:元素点击被拦截:元素在点 (513, 955) 处不可点击

如果你能帮助我,谢谢! (对不起我的英语不好......)

【问题讨论】:

  • 您是在常规模式还是无头模式下运行?你能分享你所有的代码吗?
  • 我不知道 :( 我编辑了我的问题以向您展示所有代码
  • 我明白了。现在好啦。请看我的回答。

标签: python selenium element


【解决方案1】:

为了通过多个类名选择元素,您应该使用 css_selector 或 XPath。另外,对于这个元素,最好使用这个 css 定位器:

button[type='submit']

所以试试这个:

connect_button = driver.find_element_by_css_selectro("button[type='submit']")
connect_button.click()

此外,您的代码需要等待。有了它们,它看起来像这样:

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

wait = WebDriverWait(driver, 20)

driver = webdriver.Chrome(executable_path="chromedriver.exe")
driver.maximize_window()
driver.get("https://skysand.fr")

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".login"))).click()

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#email"))).send_keys("XXXX")

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#password"))).send_keys("XXXX")

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "button[type='submit']"))).click()

【讨论】:

  • 它的工作!我有一个新错误:selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element is not clickable at point (513, 923) 但我认为这是网站的问题,这很奇怪,因为您可以手动单击它...无论如何,感谢您的帮助
  • 查看更新后的答案。让我知道现在它是否正常工作?
  • 我还添加了driver.maximize_window() 方法。这应该可以解决这个问题。
猜你喜欢
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
相关资源
最近更新 更多