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遇到的问题记录相关推荐

  1. selenium 学习、工作 记录,附常见异常和工具方法

    selenium 学习.工作 记录,附常见异常和工具方法 基础配置 2020.03.31 开发者模式 设置有认证的http代理 让selenium接管人为打开的chrome 2020.07.23(79 ...

  2. Python+selenium 自动化-读取excel记录的脚本执行登陆操作实战演示

    我们可以用 excel 来记录自动化,然后读取 excel 来执行命令,excel 可以很方便直观的管理我们录入的自动化.下面给大家演示一下 Python+selenium 自动化的实例,读取 exc ...

  3. Selenium碰到的异常记录

    Java版本的Selenium异常记录 1. 没有找到类的异常(NoClassDefFoundError) 异常如下: Exception in thread "main" jav ...

  4. 《手把手教你》系列基础篇之2-python+ selenium自动化测试-打开和关闭浏览器(详细)

    简介 本节介绍如何初始化一个webdriver实例对象driver,然后打开和关闭firefox浏览器.要用selenium打开fiefox浏览器.首先需要去下载一个driver插件geckodriv ...

  5. 【自动化测试】想了解Selenium吗?看这里!

    目录 一.自动化测试基础 1.1.什么是自动化测试 1.2.自动化测试工具与方法 1.3.自动化测试优势 1.4.如何实施自动化测试 二.selenium 介绍与环境搭建 2.1 selenium 基 ...

  6. 洞见 SELENIUM 自动化测试

    洞见SELENIUM自动化测试 写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出不穷,但是,能够在项目中持之以恒的实践自动化测试的团队,却依旧不是非常多.有的团队知道 ...

  7. Selenium 之订制启动Chrome的选项(Options)

    使用 selenium 时,我们可能需要对 chrome 做一些特殊的设置,以完成我们期望的浏览器行为,比如阻止图片加载,阻止JavaScript执行 等动作.这些需要 selenium的 Chrom ...

  8. Selenium 不同版本的区别

    Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架.它是一款用于运行端到端功能测试的超强工具.您可以使用多个编程语言编写测试,并且 Selenium 能够在一个或多个浏览器中 ...

  9. Ubuntu16.04安装谷歌浏览器和selenium

    为了方便工作需要安装谷歌浏览器和selenium,在此记录一下安装过程 系统版本为Ubuntu16.04的64位,所以我安装的浏览器和驱动版本均为64位 安装谷歌浏览器 打开终端,输入以下命令下载谷歌 ...

  10. selenium学习

    selenium库的学习记录 今天是新年的第一天呀 , 一定要好好编程猿呀 文章目录 selenium库的学习记录 一.selenium安装时出现的问题 二.向下滚动的学习 两种方法 一种是用模拟键盘 ...

最新文章

  1. 【opencv】(6) 图像轮廓处理
  2. UWP Windows10开发获取设备位置(经纬度)
  3. 树与二叉树 | 实验3:由遍历序列构造二叉树
  4. Simpleperf介绍
  5. 机器学习(监督学习) 项目流程模板
  6. python 之Requests库学习笔记
  7. 讲讲你理解的服务治理
  8. Ubuntu下配置Window CIFS共享
  9. python可以操作word吗_python实现在windows下操作word的方法
  10. 任务调度(三)——Timer的替代品ScheduledExecutorService简单介绍
  11. Javascript特效代码大全(420个)(转)
  12. MD5加盐的一个简单算法
  13. 写点什么好呢2? 钱、事业、婚姻、人生意义
  14. Lancet Neurology:长期意识障碍的干预治疗
  15. 微积分Z2 J2 典型函数
  16. 数据仓库 Inmon
  17. java 本周一_java 获取本周一的日期
  18. opensource项目_宣布2018年Opensource.com社区奖获奖者
  19. ABBA(组合数学/dp)
  20. events和event

热门文章

  1. 系统学习NLP(十三)--词向量(word2vec原理)
  2. 系统学习NLP(六)--语义分析
  3. mysql innodb monitor_mysql:innodb monitor(show engine innodb status)探秘
  4. 四川农大2020计算机专业录取分数线,四川农业大学2020年在全国各省市分专业录取分数线!含艺体类!...
  5. 计算机视觉图像去噪原理,图像去噪方法研究进展
  6. scala 排序接口Ordering
  7. 从0开始html前端页面开发_CSS实现设置背景图自适应屏幕大小
  8. redis sentinel 哨兵
  9. POJ 1755 Triathlon(半平面交)
  10. linux 命名空间Namespace机制【转】