接上一篇<webUI自动化图片验证码登录、cookie绕过验证码问题解决:https://blog.csdn.net/qsmy_an/article/details/118603671>
这篇来说下复用已打开浏览器登录这种方法,同样是因为登录页有图形验证码,省去识别图形验证码,打开已经登录的网页。
1、原理,这个方法是用Chrome先打开需要登录的网页,并登录上,比如需要输入动态图形验证码或者需要扫码登录。
打开登录网址方法:cmd命令,进入chromdriver路径下,大概路径都在这个路径下:
![](https://img-blog.csdnimg.cn/2324f484c72240e886cb5d0f218f160b.png)
在如上地址下执行命令:chrome --remote-debugging-port=9222
![](https://img-blog.csdnimg.cn/46db34d23773453882ea337c8e3c45a4.png)
执行完这个命令后,会打开Chrome浏览器,在打开的浏览器中,登录上需要自动化脚本执行的网站。
2、代码如下:这样执行之后,就是在Chrome上再次打开一个你需要的且已经登录好的网页;
#encoding=utf-8
import time
from pyrogram.filters import document
from selenium import webdriver
import requests
import sys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from utilpackage.action import *
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
def serverAutoLogin():
chrome_options = Options()
chrome_options.add_experimental_option('debuggerAddress', '127.0.0.1:9222')
chrome_driver = r"C:/Users/XXXX/AppData/Local/Google/Chrome/Application/chromedriver.exe"
driver = webdriver.Chrome(chrome_driver, options=chrome_options)
#进入已经手动登录成功的首页
driver.get('https://aaaaaa/user/login/#/spmanage/welcome')
time.sleep(3)
#点击某个元素
click(driver,"SmartPropertyIndexMenuPage","社区管理")
if __name__ == '__main__':
serverAutoLogin()
3、遇到的问题:
①cmd执行了命了,浏览器也打开了,但是执行代码的时候,无法复用。
可以尝试以下方法:先关闭所有浏览器,包括已经打开的Chrome浏览器,在任务管理器中看下有没有Chrome的进程,有的话就关闭,保证没有Chrome进程;
②等复用登上,过了几天执行代码又不行了,再执行①,不行重启电脑再试试;
cmd执行命令,浏览器可以打开,但是代码执行各种报错,调试的过程中也是遇到各种问题,忘了具体都是报错信息了,一般百度都可以解决掉。说几个需要注意的吧:
1)这种方法仅支持Chrome版本是100的驱动,版本低了或者版本高了都会报错;
2)把C盘下的Chromedriver添加到环境变量中;
代码可以直接按上面的,路径换成自己的就行了,有问题可以百度查下,一般都可以解决了;
(转载请备注谢谢!)