selenium 使用已经打开的chrome浏览器

一、背景

使用已经打开的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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容