selenium遇到的问题记录
1。在Linux上执行的用例脚本,偶尔会停止,但是脚本日志本身没有捕获到异常,
geckodriver的相关日志:
2.脚本、Firefox等进程还在,但是没有往下执行了。
3.脚本日志记录了最后一个正常执行的Firefox、geckodriver的pid,这些pid是倒数第二个用例的所起的pid。在自动化测试后台记录的最后一个用例,没有开始插入请求信息。所以可能是启动Firefox了,但是Firefox没响应,需要进一步定位。
3.尝试更新selenium、Firefox、geckodriver版本。
原来的版本信息:
selenium:3.12 (import selenium;help(selenium))
geckodriver:0.20.1
Firefox:56.0.2 (firefox --version)
更新后的版本信息:
selenium:3.14
geckodriver:0.20.1
Firefox:60.0.1
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
今天又出现这个问题了,但是看geckodriver的日志,发现了以前未出现过的错误。
1538259743546 Marionette FATAL Remote protocol server failed to start: Error: Could not bind to port 39668 (NS_ERROR_SOCKET_ADDRESS_IN_USE) (chrome://marionette/content/server.js:87:17) JS Stack trace: set acceptConnections@server.js:87:17 start@server.js:116:5 init/<@marionette.js:537:9 1538259743558 addons.xpi WARN Exception running bootstrap method shutdown on activity-stream@mozilla.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIObserverService.removeObserver]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: resource://activity-stream/lib/SnippetsFeed.jsm :: uninit :: line 185" data: no] Stack trace: uninit()@resource://activity-stream/lib/SnippetsFeed.jsm:185 onAction()@resource://activity-stream/lib/SnippetsFeed.jsm:201 _middleware/</<()@resource://activity-stream/lib/Store.jsm:49 Store/this[method]()@resource://activity-stream/lib/Store.jsm:28 uninit()@resource://activity-stream/lib/Store.jsm:151 uninit()@resource://activity-stream/lib/ActivityStream.jsm:300 uninit()@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///usr/local/firefox/browser/features/activity-stream@mozilla.org.xpi!/bootstrap.js:73 shutdown()@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///usr/local/firefox/browser/features/activity-stream@mozilla.org.xpi!/bootstrap.js:169 callBootstrapMethod()@resource://gre/modules/addons/XPIProvider.jsm:4436 observe()@resource://gre/modules/addons/XPIProvider.jsm:2287 init/<()@jar:file:///usr/local/firefox/omni.ja!/components/marionette.js:542 JavaScript error: jar:file:///usr/local/firefox/omni.ja!/components/marionette.js, line 547: TypeError: this.server is null JavaScript error: resource://gre/modules/ProfileAge.jsm, line 174: Error: Unable to fetch oldest profile entry: Unix error 2 during operation lstat on file /tmp/rust_mozprofile.90aSkqvMJnop (No such file or directory) *** UTM:SVC TimerManager:registerTimer called after profile-before-change notification. Ignoring timer registration for id: telemetry_modules_ping
提示Marionette绑定不了39668端口。然后查了下这个端口的信息,local Address和foreign address都用了一样的端口。local Address是geckodriver绑定的端口,foreign Address是Marionette绑定的端口。所以暂时把今天脚本中断的原因定为,geckodriver和Marionette的端口冲突了?
措施:1.也没找到对应的解决方法,先把geckodriver更新为0.22.0,Firefox更新为62.0
2.或者后续可以加个shell脚本之类的,监控如果Xvfb、geckodriver的进程时间超过10mins没有更新,则kill掉相应的进程,然后继续执行被终止及之后的用例?
还可以怎么定位问题?
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
补充:之前的部署步骤
- 安装pyvirtualdisplay
- pip install pyvirtualdisplay
- 安装Xvfb(作为后端)
- yum install xorg-x11-server-Xvfb
- 安装Firefox
- cd /usr/local
- wget https://ftp.mozilla.org/pub/firefox/releases/56.0.2/linux-x86_64/en-US/firefox-56.0.2.tar.bz2
- tar xjvf firefox-56.0.2.tar.bz2
- ln -s /usr/local/firefox/firefox /usr/bin/firefox
- 下载geckodriver
- wget https://github.com/mozilla/geckodriver/releases/download/v0.19.1/geckodriver-v0.19.1-linux64.tar.gz
- 解压geckodriver-v0.19.1-linux64.tar.gz
- tar xvzf geckodriver-*.tar.gz
- 在环境变量目录/usr/bin/中添加geckodriver的硬链接
- ln -s /usr/local/geckodriver /usr/bin/geckodriver
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
后续:原来的脚本用例设计其实有问题,每个用例都重新启动一遍浏览器,上百个用例频繁打开启动,应该就是这样导致偶尔启动不了。现在改成把启动浏览器的操作封装成一个方法,每次执行脚本就只调用一遍那个方法,即执行完所有用例再关闭浏览器和Xvfb。(自己瞎折腾的,只能慢慢优化了)
参考:https://blog.csdn.net/yinshuilan/article/details/79730239
关于geckodriver和Marionette:http://toolsqa.com/selenium-webdriver/how-to-use-geckodriver/
http://t-coes.com/blog/2017/08/14/launch-firefox-browser-selenium-3-0-geckodriver/
转载于:https://www.cnblogs.com/minerrr/p/9644788.html
selenium遇到的问题记录相关推荐
- selenium 学习、工作 记录,附常见异常和工具方法
selenium 学习.工作 记录,附常见异常和工具方法 基础配置 2020.03.31 开发者模式 设置有认证的http代理 让selenium接管人为打开的chrome 2020.07.23(79 ...
- Python+selenium 自动化-读取excel记录的脚本执行登陆操作实战演示
我们可以用 excel 来记录自动化,然后读取 excel 来执行命令,excel 可以很方便直观的管理我们录入的自动化.下面给大家演示一下 Python+selenium 自动化的实例,读取 exc ...
- Selenium碰到的异常记录
Java版本的Selenium异常记录 1. 没有找到类的异常(NoClassDefFoundError) 异常如下: Exception in thread "main" jav ...
- 《手把手教你》系列基础篇之2-python+ selenium自动化测试-打开和关闭浏览器(详细)
简介 本节介绍如何初始化一个webdriver实例对象driver,然后打开和关闭firefox浏览器.要用selenium打开fiefox浏览器.首先需要去下载一个driver插件geckodriv ...
- 【自动化测试】想了解Selenium吗?看这里!
目录 一.自动化测试基础 1.1.什么是自动化测试 1.2.自动化测试工具与方法 1.3.自动化测试优势 1.4.如何实施自动化测试 二.selenium 介绍与环境搭建 2.1 selenium 基 ...
- 洞见 SELENIUM 自动化测试
洞见SELENIUM自动化测试 写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出不穷,但是,能够在项目中持之以恒的实践自动化测试的团队,却依旧不是非常多.有的团队知道 ...
- Selenium 之订制启动Chrome的选项(Options)
使用 selenium 时,我们可能需要对 chrome 做一些特殊的设置,以完成我们期望的浏览器行为,比如阻止图片加载,阻止JavaScript执行 等动作.这些需要 selenium的 Chrom ...
- Selenium 不同版本的区别
Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架.它是一款用于运行端到端功能测试的超强工具.您可以使用多个编程语言编写测试,并且 Selenium 能够在一个或多个浏览器中 ...
- Ubuntu16.04安装谷歌浏览器和selenium
为了方便工作需要安装谷歌浏览器和selenium,在此记录一下安装过程 系统版本为Ubuntu16.04的64位,所以我安装的浏览器和驱动版本均为64位 安装谷歌浏览器 打开终端,输入以下命令下载谷歌 ...
- selenium学习
selenium库的学习记录 今天是新年的第一天呀 , 一定要好好编程猿呀 文章目录 selenium库的学习记录 一.selenium安装时出现的问题 二.向下滚动的学习 两种方法 一种是用模拟键盘 ...
最新文章
- 电子计算机原理讲义,计算机原理讲义
- 支付宝支付 第六集:生成支付二维码
- python subprocess 模块
- mysql文件脱机_SQL数据库的脱机与联机操作
- 在职人员计算机网络管理总结,关于学校网络管理员个人工作总结
- Linux系统挂起进程的几种方法
- 关于键盘事件中keyCode、which和charCode 的兼容性测试
- (14)css—伪类选择器
- SQL注入-联合注入
- c fscanf 按行读取文件_语言 文件 看这一篇就够了
- 安卓--shape简单使用
- yuzu 使用指南:如何在 PC 上运行 Switch 游戏
- java实习每周总结
- Ubuntu下如何截屏
- vue PC端项目页面做rem布局(大屏展示)
- mysql sniffer 源码,MySQL Sniffer 是一个基于 MySQL 协议的抓包工具
- 『互联网架构』软件架构-软件系统设计(一)
- Camera幻灯片参数设置
- 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 Training a GPT-2 language model Steps 7 to 9
- VirtualBox虚拟机几种网络连接方式介绍