一、背景
使用已经打开的chrome浏览器主要是一下几点原因:
1. 使用已经打开的chrome浏览器保存的登录状态; 这样避免需要输入账号密码,可以直接进行相关操作,如爬虫等;
2. 有些网站间隔多久未使用后,需要重新使用验证码等方式进行验证登录,这样很不利于自动化。如果我们可以用本机日常已经打开的chrome浏览器,就可以有效解决此问题;
二、 操作步骤
以下主要在Ubuntu下的操作,不涉及window与mac
2.1 起一个debug的chrome浏览器窗口
可以在命令行里这样启动: /opt/google/chrome/chrome --remote-debugging-port=9222 --user-data-dir= “设置为user-data的路径”这样就会启动一个浏览器。但是关闭终端,浏览器就关掉了。可以在ubuntu中右键锁定锁定到启动器,下次直接点这个快捷图标就可以了。执行上面操作后,其实会在~/.local/share/applications下生成一个chrome.desktop文件,vim看一下内容:
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=这里表示默认的标题
Icon=google-chrome
Path=/home/google/driver # 这里是配置chrome对应chromedriver的目录,比如chromedriver在/home/google/driver下,这里应该也可以不要的
Exec=/opt/google/chrome/chrome -remote-debugging-port=9222 --user-data-dir=设置为user-data的路径
StartupNotify=false
StartupWMClass=Google-chrome
OnlyShowIn=Unity;
X-UnityGenerated=true
MimeType=x-scheme-handler/unknown;x-scheme-handler/about;x-scheme-handler/https;x-scheme-handler/http;text/html;
后面这边默认就行
2.2 配置一个本机主用的chrome浏览器
这里一个debug的chrome浏览器,用来跑selenium的。另外一个正常工作使用的。配置正常工作使用的跟上面方法一样:
在~/.local/share/applications生成一个google-chrome.desktop
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=Google Chrome
Icon=google-chrome
Exec=/opt/google/chrome/chrome --profile-directory=Default
StartupNotify=false
StartupWMClass=Google-chrome
OnlyShowIn=Unity;
X-UnityGenerated=true
注意这里的Exec=/opt/google/chrome/chrome --profile-directory=Default设置为默认的。
2.3 代码实现
# -*- coding: utf-8 -*-
fromseleniumimportwebdriver
fromselenium.webdriver.chrome.optionsimportOptions
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress","127.0.0.1:9222")
chrome_driver ="XXXX/chromedriver"
driver = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)
driver.get('www.baidu.com')
这里的chrome_driver通过https://sites.google.com/a/chromium.org/chromedriver/downloads获取与本机相同版本的driver文件。查看本机chrome版本号可以在chrome浏览器中输入:chrome://verison即可。
注意这里的chromedriver需要加入到环境变量中,否则会出现以下异常:
create chrome driver error, Message: 'chromedriver' executable needs to be in PATH。Please see https://sites.google.com/a/chromium.org/chromedriver/home
如下方式添加到环境变量中:
1. sudo vim /etc/profile
2. 末尾加上: export PATH=$PATH:chromedriver存放的绝对路径
3. source etc/profile