对于使用SeleniumPythonAPI绑定从Chrome获取console.log输出感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解pythonseleniumchrome获取每个请求
对于使用Selenium Python API绑定从Chrome获取console.log输出感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解python selenium chrome获取每个请求内容,并且为您提供关于centos7+python+selenium+chrome、centos7.4 64位安装 google-chrome 与 chromedriver 运行 Python selenium 项目、Chrome浏览器通过Pythonselenium自动更新时如何使用特定版本的ChromeDriver、Linux配置Selenium+Chrome+Python的宝贵知识。
本文目录一览:- 使用Selenium Python API绑定从Chrome获取console.log输出(python selenium chrome获取每个请求内容)
- centos7+python+selenium+chrome
- centos7.4 64位安装 google-chrome 与 chromedriver 运行 Python selenium 项目
- Chrome浏览器通过Pythonselenium自动更新时如何使用特定版本的ChromeDriver
- Linux配置Selenium+Chrome+Python
使用Selenium Python API绑定从Chrome获取console.log输出(python selenium chrome获取每个请求内容)
我正在使用Selenium通过Python
API绑定在Chrome中运行测试,但在弄清楚如何配置Chrome以使console.log
加载的测试的输出可用时,我遇到了麻烦。我看到WebDriver对象上有get_log()
和log_types()
方法,并且已经看到Getchrome的控制台日志,该日志显示了如何使用Java进行操作。但是我LoggingPreferences
在Python API
中看不到Java的等效类型。有什么办法可以满足我的需求?
答案1
小编典典好了,终于明白了:
from selenium import webdriverfrom selenium.webdriver.common.desired_capabilities import DesiredCapabilities# enable browser loggingd = DesiredCapabilities.CHROMEd[''loggingPrefs''] = { ''browser'':''ALL'' }driver = webdriver.Chrome(desired_capabilities=d)# load the desired webpagedriver.get(''http://foo.com'')# print messagesfor entry in driver.get_log(''browser''): print(entry)
source
字段相等的条目''console-api''
对应于控制台消息,消息本身存储在该message
字段中。
从chromedriver 75.0.3770.8开始,您必须使用goog:loggingPrefs而不是loggingPrefs:
d[''goog:loggingPrefs''] = { ''browser'':''ALL'' }
centos7+python+selenium+chrome
1. 安装 chrome
yum install google-chrome
2. 安装 chromedriver
所有版本的下载地址:https://sites.google.com/a/chromium.org/chromedriver/downloads
wget https://chromedriver.storage.googleapis.com/2.39/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
3.selenium
pip install selenium
4. 例子
>>> from selenium import webdriver
>>> chrome_options = webdriver.ChromeOptions()
>>> chrome_options.add_argument(''--headless'')
>>> chrome_options.add_argument(''--no-sandbox'') # 这句一定要加
#我一开始没加,就一直报‘selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally’。搞了很久。
>>> driver = webdriver.Chrome(executable_path=''/root/chromedriver'', chrome_options=chrome_options)
>>> driver.get(''http://py2app.readthedocs.io/en/latest/examples.html'')
>>> print driver.title
Example setup.py templates — py2app 0.15 documentation
5. 注意
chromedriver 应该要给执行权限,也就是 chmod +x chromedriver,因为我为了解决 Chrome failed to start: exited abnormally 这个错误,做了很多尝试,也不知道这个是不是必须的,加了不会错
centos7.4 64位安装 google-chrome 与 chromedriver 运行 Python selenium 项目
centos7.4 实例
利用 yum 命令安装 google-chrome 超级简单(安装最新版):
yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
chromedriver 也下载最新版就好,和Mac 版本一样,我依旧选择这个最新版本:
http://chromedriver.storage.googleapis.com/index.html?path=70.0.3538.16/
Python3.7 之前安装过:
Centos7 环境下 Python2.7 换成 Python3.7 运行 scrapy 应用所遇到的问题记录
然后配置一下,就能跑起来 selenium 项目了,当然该 pip install xxx 安装模块就缺什么安装什么了
# 设置 webdriver 参数
options = webdriver.ChromeOptions()
# 设置谷歌浏览器的一些选项
# proxy 代理 options 选项
options.add_argument(r''--proxy--server=http:\\'' + ip)
uas = get_uas()
# 设置user-agent
options.add_argument(''user-agent='' + choice(uas))
# 以 headless 方案运行
options.add_argument(''--headless'')
options.add_argument(''--no-sandbox'')
# options.add_argument(''--disable-dev-shm-usage'')
# 禁用图片访问
# prefs = {"profile.managed_default_content_settings.images": 2}
# options.add_experimental_option("prefs", prefs)
如果不配置 # 以 headless 方案运行
会抛出下面异常
[root@iZwz9117d4ssv2v5oe81m3Z selenium_baidu]# python testRun.py
package_util 初始化
testRun.py:32: DeprecationWarning: use options instead of chrome_options
driver = webdriver.Chrome(path, chrome_options=options)
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/python/lib/python3.7/threading.py", line 917, in _bootstrap_inner
self.run()
File "/usr/python/lib/python3.7/threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "testRun.py", line 32, in get_url
driver = webdriver.Chrome(path, chrome_options=options)
File "/usr/python/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
desired_capabilities=desired_capabilities)
File "/usr/python/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/usr/python/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/python/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/python/lib/python3.7/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: Chrome failed to start: exited abnormally
(unknown error: DevToolsActivePort file doesn''t exist)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
(Driver info: chromedriver=70.0.3538.16 (16ed95b41bb05e565b11fb66ac33c660b721f778),platform=Linux 3.10.0-693.2.2.el7.x86_64 x86_64)
selenium 代码正确运行:
Chrome浏览器通过Pythonselenium自动更新时如何使用特定版本的ChromeDriver
如何解决Chrome浏览器通过Pythonselenium自动更新时如何使用特定版本的ChromeDriver?
,除了更新 ChromeDriver 二进制版本外,没有其他选择,而 Chrome浏览器 会不断自动更新。
原因
在添加,修改和删除现有功能后,会释放每个 Chrome浏览器 。为了符合当前的 浏览器功能 集, Chrome团队 会不时发布兼容的ChromeDriver 二进制文件。这些 ChromeDriver 二进制文件能够与 Chrome浏览器 进行交互。某些版本的ChromeDriver 二进制文件支持特定范围的 Chrome浏览器 版本(某些是最新版本),如下所示:
-
ChromeDriver v (2020-05-28)
Supports Chrome version 84
-
ChromeDriver v (2020-05-05)
Supports Chrome version 83
-
ChromeDriver v 被 故意 跳过。
-
ChromeDriver v (2020-05-05)
Supports Chrome version 81
-
ChromeDriver v (2020-02-13)
Supports Chrome version 80
-
ChromeDriver v (2019-11-18)
Supports Chrome version 79
-
ChromeDriver v (2019-10-21)
Supports Chrome version 78
-
ChromeDriver v (2019-08-20)
Supports Chrome version 77
-
ChromeDriver v (2019-08-20)
Supports Chrome version 76
-
ChromeDriver v (2019-04-29)
Supports Chrome version 75
-
ChromeDriver v (2019-03-14)
Supports Chrome version 74
-
ChromeDriver v (2019-03-06)
Supports Chrome version 73
-
ChromeDriver v (2019-02-01)
Supports Chrome v71-73
-
ChromeDriver v (2018-12-10)
Supports Chrome v70-72
-
ChromeDriver v (2018-11-19)
Supports Chrome v69-71
-
ChromeDriver v (2018-10-16)
Supports Chrome v69-71
-
ChromeDriver v (2018-09-13)
Supports Chrome v68-70
-
ChromeDriver v (2018-07-27)
Supports Chrome v67-69
-
ChromeDriver v (2018-06-07 )
Supports Chrome v66-68
-
ChromeDriver v (2018-05-30)
Supports Chrome v66-68
-
ChromeDriver v (2018-04-17 )
Supports Chrome v65-67
-
ChromeDriver v (2018-03-16 )
Supports Chrome v64-66
-
ChromeDriver v (2018-03-02 )
Supports Chrome v63-65
-
ChromeDriver v (2018-01-10 )
Supports Chrome v62-64
-
ChromeDriver v (2017-12-10 )
Supports Chrome v61-63
-
ChromeDriver v (2017-10-03)
Supports Chrome v60-62
-
ChromeDriver v (2017-08-30)
Supports Chrome v59-61
-
ChromeDriver v (2017-07-21)
Supports Chrome v58-60
-
ChromeDriver v (2017-06-07)
Supports Chrome v58-60
-
ChromeDriver v (2017-04-04)
Supports Chrome v56-58
结论
要使脚本/程序与更新的 Chrome浏览器 保持交互,您必须根据 兼容性将ChromeDriver 二进制版本与 Chrome浏览器 保持同步。
解决方法
我是Selenium的新手,现在可以将selenium与Chromedriver一起使用以进行基本的自动测试,代码可以正常工作,但问题是Chrome浏览器始终在后端自动更新,并且代码始终在Chrome更新后无法运行。我知道我需要下载新的chromedriver来解决此问题,但是我想知道是否有任何方法可以在不禁用chromebrowser更新的情况下解决此问题?tks。
我正在使用Windows 10 / Chrome版本67 / Python 3.6.4 / Selenium 3.12.0
Linux配置Selenium+Chrome+Python
---恢复内容开始---
最近一个月没有更新博客了。最近都在复习LINUX与PYTHON知识。决定以后在LINUX环境下学习新知识。
包括后期的框架学习与平台知识方面。
直接记录今天下午的学习成果。
https://blog.csdn.net/zhaoyabei/article/details/52355021 这是参照的博客知识。
1.安装chrome
1,sudo apt-get install libxss1 libappindicator1 libindicator7
2,wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
3,sudo dpkg -i google-chrome*.deb
如果上面运行
sudo dpkg -i google-chrome*.deb命令之后报错,使用如下命令修复一下:
sudo apt-get install -f,之后再次运行sudo dpkg -i google-chrome*.deb命令就可以了
安装后确认/usr/bin目录下是否有google-chrome文件
2.安装python、安装Selenium、安装requests(可选)
1,sudo apt-get install python-pip
2,sudo pip install selenium
3,#requests模块,可选安装
4,sudo pip install requests
3.安装chromedriver
建议安装最新版本的chromedriver,下载页面:
http://chromedriver.storage.googleapis.com/index.html
在这个页面里列出了chromedriver的各个版本,我们选择目前最新的版本(2.29),使用命令行安装:
1,wget -N http://chromedriver.storage.googleapis.com/2.29/chromedriver_linux64.zip ##注意,这里2.29要换成实际对应你下载的CHROME的版本。目前最新的是:2.43
2,unzip chromedriver_linux64.zip
3,chmod +x chromedriver
4,sudo mv -f chromedriver /usr/local/share/chromedriver
5,sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
6,sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver
安装后确认/usr/bin目录下是否有chromedriver文件
由于时效性,在安装时应当先去网站查看最新版本,然后替换命令行中的2.29版本信息
注意点:1,chromedriver与浏览器对应的版本号。
2,程序在pycharm中运行时,检查路径/usr/bin下才是正确的。(默认的,如果不在这个路径下,程序识别不到selenium与webdriver)
这个可以在pycharm的settings---project interpreter中设置。
目前自己在开始运行时,碰到了这俩个问题,后续碰到其他问题后再更新。
3,
通过终端安装程序sudo apt-get install xxx时出错:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
出现这个问题可能是有另外一个程序正在运行,导致资源被锁不可用。而导致资源被锁的原因可能是上次运行安装或更新时没有正常完成,进而出现此状况
解决方案:
在终端中敲入以下两句
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
---恢复内容结束---
关于使用Selenium Python API绑定从Chrome获取console.log输出和python selenium chrome获取每个请求内容的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于centos7+python+selenium+chrome、centos7.4 64位安装 google-chrome 与 chromedriver 运行 Python selenium 项目、Chrome浏览器通过Pythonselenium自动更新时如何使用特定版本的ChromeDriver、Linux配置Selenium+Chrome+Python等相关知识的信息别忘了在本站进行查找喔。
本文标签: