GVKun编程网logo

使用Selenium Python API绑定从Chrome获取console.log输出(python selenium chrome获取每个请求内容)

13

对于使用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获取每个请求内容)

使用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

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 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

如何解决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配置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,

linux 遇见错误Could not get lock /var/lib/dpkg/lock

通过终端安装程序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等相关知识的信息别忘了在本站进行查找喔。

本文标签: