首页 > 解决方案 > chrome中的python在点击时自动登录?

问题描述

站点打开,用户名和密码部分自动登录,但没有点击。如果你能帮忙,我会很高兴。

# -*- coding: cp1254 -*-
from selenium import webdriver
driver = webdriver.Chrome("chromedriver")
username = 'blabla@gmail.com'
password = '12345'
driver.get('https://xyz/login')
# find username/email field and send the username itself to the input field
driver.find_element_by_name("username").send_keys(username)
# find password input field and insert password as well
driver.find_element_by_name("password").send_keys(password)
# click login button
driver.find_element_by_xpath('/html/body/div[1]/section/div/div/div/form/div/div/div/div[3]/button').click()

错误:

self._execute(Command.CLICK_ELEMENT)
  File "C:\Users\Barış\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "C:\Users\Barış\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\Barış\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <button name="sign-in" type="submit" class="btn btn--large btn--primary">...</button> is not clickable at point (528, 568). Other element would receive the click: <a class="back-to-top" href="#">...</a>
  (Session info: chrome=92.0.4515.159)

标签: python-3.xselenium-chromedriverclickautologin

解决方案


您可以使用 JavaScript 执行器单击提交按钮,如下所示:

# -*- coding: cp1254 -*-
from selenium import webdriver
driver = webdriver.Chrome("chromedriver")
username = 'blabla@gmail.com'
password = '12345'
driver.get('https://xyz/login')
# find username/email field and send the username itself to the input field
driver.find_element_by_name("username").send_keys(username)
# find password input field and insert password as well
driver.find_element_by_name("password").send_keys(password)
# click login button
submit_btn = driver.find_element_by_xpath('/html/body/div[1]/section/div/div/div/form/div/div/div/div[3]/button')
driver.execute_script("arguments[0].click();", submit_btn)

或者,您可以使用滚动到此按钮,action_chains然后单击它

# -*- coding: cp1254 -*-
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome("chromedriver")
actions = ActionChains(driver)
username = 'blabla@gmail.com'
password = '12345'
driver.get('https://xyz/login')
# find username/email field and send the username itself to the input field
driver.find_element_by_name("username").send_keys(username)
# find password input field and insert password as well
driver.find_element_by_name("password").send_keys(password)
# click login button
submit_btn = driver.find_element_by_xpath('/html/body/div[1]/section/div/div/div/form/div/div/div/div[3]/button')
actions.move_to_element(submit_btn).perform()
time.sleep(0.3)
submit_btn.click()

推荐阅读