我使用的每个项目的版本如下:Selenium 3.4.0,GeckoDriver v0.19.0 for Linux 64和Firefox 52.4.0 .
我在这个网站上问过的第一个问题 . 我通常能够通过简单的潜伏来解决问题,但是这个问题一直给我一个真正的运行我的钱 .
我正在尝试将Jenkins设置为“mvn clean test”一个项目,该项目将在“test”上运行Selenium(使用版本3.4.0)测试 . 本质上,该项目是使用Selenium与另一个项目交互的类的集合 . 我已将JUnit测试附加到此项目,以便通过构建它,我可以使用我创建的测试套件 .
我可以使用Chrome或Firefox在我的本地计算机上执行此操作,但我希望Jenkins每晚自动执行此操作 . 我在Centos 7服务器上安装了Jenkins,我试图让这个项目与无头浏览器一起工作 . 我与PhantomJS有一些不同的问题(幻影中的DOM是空白的),所以我也尝试使用无头Firefox(使用版本52.4.0) . 以下是我采取的一般步骤:
-
在CentOS上安装Xvfb .
-
在CentOS上安装Firefox(52.4.0) .
-
运行"Xvfb :99 -ac &"
-
运行"export DISPLAY=:99"
-
使用"mvn clean test"运行项目 .
(我有,我会在Jenkins上尝试第3-5步,但我只是坚持让它单独使用CentOS . )
该项目开始没有:
T E S T S. . . . . . 运行com . ***** . ***** . workflows.HappyPathTest . . . . . . 1510266036943 Marionette INFO在2828端口收听
然后它会在此之前停留片刻,然后发生以下情况:
org.openqa.selenium.WebDriverException:连接被拒绝构建信息:版本:'3.4.0',修订版:'未知',时间:'未知'系统信息:主机:'localhost.localdomain',ip:'0:0 :0:0:0:0:0:1',os.name:'Linux',os.arch:'amd64',os.version:'3.10.0-327.36.3.el7.x8 6_64',java .version:'1.8.0_111'驱动程序信息:driver.version:FirefoxDriver远程堆栈跟踪:堆栈回溯:0:0x4f388c - backtrace :: backtrace :: trace:
等等 .
发生错误的行很简单:“methodDriver = new FirefoxDriver();”
我最初认为“拒绝连接”意味着防火墙以某种方式阻止它,但是,当然,一切都在同一台服务器上,而“firewalld”进程并没有按原样运行 .
任何帮助将不胜感激 .
编辑:建议的线程涉及一个明显相似的问题,但那里的建议与我在这里解决问题的方法不同 . 但是,我确实通过更新我的Firefox版本来解决这个问题 .
2 回答
请检查磁盘是否已满核心转储文件 . 它可能位于您的工作目录或用户目录中 . 在我的环境中,我们只获得了前20个测试,因为我们的用户目录只有少于1G的可用空间 .
好吧,我似乎能够解决这个具体问题 .
我只是将firefox更新为56.0.1 . 当我最初安装firefox时,看起来Centos没有默认为最新版本 .
我记得读过一些东西,“GeckoDriver的每个版本都是专门为特定版本的Firefox定制的” . 所以,每次你获得一个新的GeckoDriver可能需要一个新的firefox .
这为一个全新的问题打开了大门 . 我到达这一行:
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.className( “resultText”)));
这与头部浏览器一起工作正常,我得到以下回复:
“org.openqa.selenium.TimeoutException:预期条件失败:等待By.className定位的任何元素的存在:resultText(尝试20秒,间隔为250 MILLISECONDS)”
这看起来与我在PhantomJS中遇到的问题类似 . 这就好像无头浏览器访问的网站完全不同于头部浏览器 .