python-3.x - 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)
解决方案
您可以使用 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()
推荐阅读
- java - How to get data from OnSuccessListener
() - html - 以自己的形式搜索 Google 地址栏
- orientdb - Gremlin: Group by multiple properties from two different vertices
- python - Python modules in visual studio code
- laravel - 使用订阅时,laravel-graphql-playground 无法连接到 UI 中的 websocket
- c# - 更新 v76 后,我得到脚本在 selenium 中返回意外结果错误
- java - Create new List
() by getting member of List - >() without linking them
- mysql - 使用 concat 按周分组 SQL
- azure-devops - Azure 开发运维。复制文件。发布工件。构建成功时找到 0 个文件
- python - 根据条件为 pandas df 列分配三个值