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. 电子计算机原理讲义,计算机原理讲义
  2. 支付宝支付 第六集:生成支付二维码
  3. python subprocess 模块
  4. mysql文件脱机_SQL数据库的脱机与联机操作
  5. 在职人员计算机网络管理总结,关于学校网络管理员个人工作总结
  6. Linux系统挂起进程的几种方法
  7. 关于键盘事件中keyCode、which和charCode 的兼容性测试
  8. (14)css—伪类选择器
  9. SQL注入-联合注入
  10. c fscanf 按行读取文件_语言 文件 看这一篇就够了
  11. 安卓--shape简单使用
  12. yuzu 使用指南:如何在 PC 上运行 Switch 游戏
  13. java实习每周总结
  14. Ubuntu下如何截屏
  15. vue PC端项目页面做rem布局(大屏展示)
  16. mysql sniffer 源码,MySQL Sniffer 是一个基于 MySQL 协议的抓包工具
  17. 『互联网架构』软件架构-软件系统设计(一)
  18. Camera幻灯片参数设置
  19. 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 Training a GPT-2 language model Steps 7 to 9
  20. VirtualBox虚拟机几种网络连接方式介绍

热门文章

  1. KNN(五)--层次Kmean
  2. 心音与心电信号分析之一--6.26--心音信号检测系统软件设计
  3. 高中电子技术——二极管的类型和作用
  4. php封装函数输出,php函数封装
  5. java判断浏览器类型_判断浏览器类型
  6. DNS如何查找IP?
  7. 原型模式的原理与应用
  8. 为什么说红黑树是“近似平衡”的?
  9. Hbase Scan类 ResultScanner类
  10. 【剑指offer】之字形打印二叉树,C++实现