加载浏览器配置
前言
有小伙伴在用脚本启动浏览器时候,发现原来下载的插件不见了,无法用firebug在打开的页面上继续定位页面元素,调试起来不方便 。实际上,用脚本去打开浏览器时,其实是重新打开了一个进程,跟手动打开浏览器不是一个进程,所以没主动加载插件。不过selenium里面其实提供了对应的方法去打开,只是很少有人用到。
加载配置文件,相当于加载一些用户信息,类似用户的cookie和Session,功能类似于免登录,可以用来绕过验证码登录。
注意:我们参考的配置信息一定是通过手动登陆获取的,而不是通过自动化运行之后获取的,因为自动化运行都是从登陆开始的,本身就为空。
操作:
先在要操作的浏览器上,手动登录想要绕过登录的网站(登录完不要退出)。
接下来,利用加载配置文件方式实现免登陆。
一、加载firefox配置
1、Firefox的配置文件地址如何找到呢?
打开Firefox点右上角设置>?(帮助)>故障排除信息>应用程序概要>显示文件夹
![]()
打开后把路径复制下来就可以了
C:\Users\xxx\AppData\Roaming\Mozilla\Firefox\Profiles\1x41j9of.default
![]()
2、参考代码如下:
1 from selenium import webdriver 2 3 profile_directory=r"C:\Users\Cherry\AppData\Roaming\Mozilla\Firefox\Profiles\ppe61bfs.default" 4 #加载配置设置 5 profile=webdriver.FirefoxProfile(profile_directory) 6 #把profile配置放入浏览器启动生效 7 driver=webdriver.Firefox(profile) #启动火狐浏览器 8 # driver.get("https://blog.csdn.net/fengling732") #登录csdn页面,试验成功 9 driver.get("https://home.cnblogs.com/u/fengling732/") #登录博客园页面(机制变了,试验不成功,还是会跳到登录页面要求登录) 10 11 #driver.quit() #关闭浏览器
运行后直接跳转到登录成功后的页面,免除了登录。

二、加载chrome配置(暂时无解,下次再看)
from selenium import webdriver option = webdriver.ChromeOptions() # 设置成用户自己的数据目录【这里只要到User Data,不是User Data\Default】 #--user-data-dir=后面的数据代表的是Google安装位置中的User Data(用户数据), # 如option.add_argument('--user-data-dir=C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data') # 这里的Administrator根据不同的电脑用户可能有所差别,弹性改下就可以 option.add_argument('--user-data-dir=C:\\Users\\Cherry\\AppData\\Local\\Google\\Chrome\\User Data') #设置成用户自己的数据目录【这里只要到User Data,不是User Data\Default】 driver = webdriver.Chrome(chrome_options=option) #Chrome加载略微慢点 driver.get("https://blog.csdn.net/") # # driver.quit()
然而,运行报错:
D:\Dev\Python36\python.exe D:/Dev/PyCharm/workplace/redmine/test11.py Traceback (most recent call last): File "D:/Dev/PyCharm/workplace/redmine/test11.py", line 75, in <module> driver = webdriver.Chrome(chrome_options=option) File "D:\Dev\Python36\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 81, in __init__ desired_capabilities=desired_capabilities) File "D:\Dev\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__ self.start_session(capabilities, browser_profile) File "D:\Dev\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "D:\Dev\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute self.error_handler.check_response(response) File "D:\Dev\Python36\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: unknown error: DevToolsActivePort file doesn't exist (Driver info: chromedriver=2.40.565498 (ea082db3280dd6843ebfb08a625e3eb905c4f5ab),platform=Windows NT 10.0.17134 x86_64) Process finished with exit code 1



浙公网安备 33010602011771号