首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Jenkins服务器中作为作业运行Selenium代码时,selenium代码无法打开firefox浏览器

在Jenkins服务器中作为作业运行Selenium代码时,selenium代码无法打开firefox浏览器
EN

Stack Overflow用户
提问于 2020-08-20 08:54:11
回答 3查看 619关注 0票数 3

我在Selenium/Java测试类中有以下代码。现在,这段代码我已经推送到了GitHub。此外,我还设置了Jenkins作业来执行相同的代码(在Jenkins作业中,我将代码指向GitHub)。Jenkins作业触发正常并开始执行测试,但在打开浏览器时抛出以下错误。测试用例应该打开Firefox浏览器,但是Firefox浏览器没有打开。

所以,我的问题是,如果我想在Jenkins作业中执行测试用例(Jenkins服务器在Cento7.4OS上运行),下面的selenium代码是否正确。

注意:在同一个CentOS VM中,我能够在eclipse中执行相同的selenium代码(如下所示),并且它能够打开Firefox浏览器并打开URL,没有任何问题。只有当我尝试在Jenkins服务器中运行与Jenkins作业相同的代码时,问题才会出现。

Selenium代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
System.setProperty("webdriver.gecko.driver",  "geckodriver");
FirefoxOptions firefoxOptions = new FirefoxOptions();
firefoxOptions.addArguments("--display=0");
    
WebDriver driver = new FirefoxDriver(firefoxOptions);
driver.get("https://www.facebook.com");

Jenkins作业输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Running TestSuite

Failed to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
1597912923234   mozrunner::runner   INFO    Running command: "/bin/firefox" "-marionette" "--display=0" "-foreground" "-no-remote" "-profile" "/tmp/rust_mozprofileFz0Zr2"
Failed to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Running without a11y support!
Error: cannot open display: 0
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.972 sec <<< FAILURE!

Results :

Failed tests:   loginTest4(com.training.browsers.LinuxTest): invalid argument: can't kill an exited process

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0

[ERROR] There are test failures.

xauth list输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost ~]# xauth list
localhost.localdomain/unix:0  MIT-MAGIC-COOKIE-1  4eb74af687f2dbc022ef03617614456e
#ffff#6c6f63616c686f73742e6c6f63616c646f6d61696e#:0  MIT-MAGIC-COOKIE-1  4eb74af687f2dbc022ef03617614456e
EN

回答 3

Stack Overflow用户

发布于 2020-11-10 04:33:34

您可能想研究一下如何设置xvfb (https://centos.pkgs.org/7/centos-x86_64/xorg-x11-server-Xvfb-1.20.4-10.el7.x86_64.rpm.html)。问题是您的Jenkins服务器无法打开display 0来运行。请注意,发送到firefox二进制文件的参数在firefoxOptions中指定display 0,与二进制文件执行的信息日志行匹配。假设你正在运行一个无头服务器,这就是为什么你会得到这个错误。在本地运行时情况并非如此。使用xvfb,您应该能够指定屏幕编号并相应地设置您的配置,或者简单地使用xvfb-run。

票数 2
EN

Stack Overflow用户

发布于 2020-11-10 09:35:03

测试用例应该打开火狐浏览器,但是火狐浏览器没有打开。

要解决此问题,请使用WebDriverManager自动管理驱动程序(例如chromedriver、geckodriver等)。Selenium WebDriver需要。

要在Maven项目中使用WebDriverManager,请在pom.xml中添加以下依赖项(需要Java8或更高版本)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>4.2.2</version>
</dependency>

然后,只需在代码中添加WebDriverManager.firefoxdriver().setup();,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import io.github.bonigarcia.wdm.WebDriverManager;

WebDriverManager.firefoxdriver().setup();

FirefoxOptions firefoxOptions = new FirefoxOptions();  
firefoxOptions.addArguments("--display=0");
WebDriver driver = new FirefoxDriver(options);

查看使用WebDriverManager here在火狐和Chrome上运行JUnit 4测试的基本示例。

票数 1
EN

Stack Overflow用户

发布于 2020-11-10 14:23:06

--display=n

短语display用于指代共享公共键盘和指针的监视器的集合,例如鼠标、平板电脑等。大多数工作站往往只有一个键盘,因此也就只有一个显示器。多用户系统通常具有多个显示器,当用于该显示器的X服务器启动时,机器上的每个显示器都会被分配一个显示编号(从0开始)。display:0通常是本地显示器,即计算机的主显示器。

使用Jenkins

当Jenkins执行批处理文件时,Jenkins slave会在后台为它启动的每个程序运行服务。因此,通常情况下,您无法看到Firefox浏览器启动,但在任务管理器中,您可以看到Jenkins在后台打开几个Firefox进程。

解决方案

有几种方法可以解决这个问题,如下所示:

如果您使用Jenkins作为windows服务,则需要允许服务与桌面交互。步骤:

windows服务中的

  • 选择Jenkins的服务:

  • 打开Jenkins服务的属性窗口-> Logon->启用复选框Logon

在这种方法中,的自动启动在X11会话下工作,否则将被禁用,因为不同的应用程序无法建立dbus守护进程的公共实例。

您可以在Jenkins : Selenium GUI tests are not visible on Windows中找到相关的详细讨论

另一种方法是在命令提示符下以java -jar jenkins.war身份运行Jenkins,而不是windows installer版本。

另一种方法是使用RemoteWebDriver。在Jenkins中,确保有一台机器可以运行selenium测试。在此服务器上,您可以启动firefox浏览器。

您可以在How to launch chrome browser from Jenkins directly instead of using code in eclipse中找到相关的详细讨论

另一种方法是通过FirefoxOptions()类的实例将setHeadless设置为true来调用firefox-headless浏览器,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FirefoxOptions options = new FirefoxOptions();
options.setHeadless(true);
WebDriver driver = new FirefoxDriver(options);
driver.get("https://www.google.com/");

您可以在How to make Firefox headless programmatically in Selenium with Python?中找到相关的详细讨论

无效参数:无法终止已退出的进程

在以下两种情况下,通常会观察到此错误:

当您以超级用户/管理员用户身份执行测试时使用

  • 。建议以非超级用户/非管理员用户身份执行测试。当您使用的二进制文件版本不兼容时,请使用

您可以在WebDriverException: Message: invalid argument: can't kill an exited process with GeckoDriver, Selenium and Python on RaspberryPi3

中找到详细的讨论

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63501595

复制
相关文章
python+selenium+Jenkins+Firefox集成
python 下载地址:https://www.python.org/getit/
苦叶子
2018/07/25
9300
python+selenium+Jenkins+Firefox集成
selenium启动firefox时加载扩展
    有些时候,我们测试需要用到插件或者已经导入的证书(比如金融和安全加密行业),而selenium启动firefox时会打开一个新的,不含有任何插件和个人证书的firefox(等同于全新安装后第一次打开的那个firefox)这种情况下,我们就要用firefoxprofile了。
流柯
2018/08/30
1.3K0
Selenium在异步加载中的应用简书文章异步加载Selenium代码代码分析
简书文章异步加载 之前爬虫小分队的第一次作业就是爬取简书七日热门,同学们应该知道部分数据是异步加载的,对于阅读,评论,喜欢的抓取数据策略为使用正则表达式匹配,收录专题就是找包来获取数据的。 Selen
罗罗攀
2018/07/03
1.5K0
selenium使用webdriver,打开浏览器
from selenium import webdriver import time driver=webdriver.Chrome() driver.maximize_window() time.sleep(5) driver.get("https://www.baidu.com/")
用户1171305
2019/07/02
1.5K0
selenium使用webdriver,打开浏览器
如何在Chrome浏览器中运行Selenium?
测试系统是一项艰巨的任务,您需要一个可以在此过程中为您提供帮助的工具。Selenium就是这样一种工具,主要用于网站测试。在本文中,我将告诉您如何在Chrome浏览器中运行Selenium。
用户8460142
2023/07/07
5800
如何在Chrome浏览器中运行Selenium?
Selenium Firefox驱动程序:使用Firefox浏览器自动进行测试
根据statcounter统计,到2020年6月,Mozilla Firefox浏览器在全球浏览器市场中所占份额为4.25%,因此,对于每个Selenium测试用例,Mozilla Firefox浏览器都是不可避免的。 Mozilla开发人员推出了Geckodriver(也称为Selenium Firefox驱动程序),以帮助测试人员使用Firefox浏览器自动进行浏览器测试。
用户7466307
2020/07/20
9.1K0
Selenium Firefox驱动程序:使用Firefox浏览器自动进行测试
Katalon + 傻瓜 == selenium 代码
、简直是神器啊 (๑• . •๑)今天在翻莫烦大大的博客时,看到他提到一个工具,便去看了下,第一感受是,太好用了、爱不释手。
小歪
2018/07/25
1K0
Katalon + 傻瓜 == selenium 代码
web自动化测试面试题
3、浏览器页面中hidden或者是display=none的元素,selenium是没法定位到的
找Bug
2022/07/22
7940
Selenium自动化测试框架入门整理「建议收藏」
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说Selenium自动化测试框架入门整理「建议收藏」,希望能够帮助大家进步!!!
Java架构师必看
2022/08/09
1.6K0
Selenium自动化测试框架入门整理「建议收藏」
Selenium自动化测试框架入门整理
本文主要针对Selenium自动化测试框架入门整理,只涉及总体功能及框架要点介绍说明,以及使用前提技术基础要求整理说明。作为开发人员、测试人员入门参考。
嘉为蓝鲸
2018/12/21
1.5K0
在 Python 中使用 Selenium 打开链接
使用 Selenium 打开链接的最简单方法是使用 WebDriver 对象的 get() 方法。此方法指示浏览器导航到指定的 URL。
很酷的站长
2023/08/11
7570
在 Python 中使用 Selenium 打开链接
Selenium控制浏览器静默模式运行
日常的UI自动化测试过程中,可以打开无界面的浏览器实现静默模式完成自动化测试。静默模式只需要使用浏览器的内核,不显示界面。
Altumn
2019/10/21
1.9K0
Selenium控制浏览器静默模式运行
软件测试|selenium复用已打开浏览器
右键点击Chrome浏览器快捷方式-属性-目标,目标中的值即为Chrome浏览器位置
霍格沃兹测试开发Muller老师
2022/12/28
1.5K0
selenium webdriver 启动三大浏览器Firefox,Chrome,IE
     1. 进入Python官方网站:https://www.python.org/downloads/  下载并安装最新版本的Python(建议安装Python3) 。
拓荒者
2019/03/11
1.1K0
selenium webdriver 启动三大浏览器Firefox,Chrome,IE
《Python Web开发 - 测试驱动方法》阅后感
这本书的原名是叫《Test-Driven Development with Python》,小标题是 Obey the Testing Goat: Using Django, Selenium, and JavaScript。虽然有点难以理解为何这本书的中文名变成了《Python Web开发 - 测试驱动方法》,总感觉怪怪的,毕竟Kent Beck的那本书名是《测试驱动开发》。 如我在微博上所说,这本书的Python Web开发所用的框架是Django。问了几个出版社都没有出版Django书的计划,要知道有
Phodal
2018/01/26
1.3K0
selenium + firefox + webdriver 遇到的坑
采用多线程调用webdriver时候,偶尔会出现这样的错:selenium.common.exceptions.WebDriverException: Message: connection refused
拓荒者
2019/03/11
3.3K0
selenium Firefox 设置代理(认证)0
版权声明:如需转载本文章,请保留出处! https://blog.csdn.net/xc_zhou/article/details/90613970
周小董
2019/06/11
3.3K0
python selenium短信轰炸代码
代码可以理解为两方面。一部分是借助python的selenium库来实现自动化与网页交互,另一部分是借助网站平台在登录时,可以通过发送手机验证码来实现,
用户9325455
2021/12/25
10K0
python selenium短信轰炸代码
技术分享 | SeleniumIDE用例录制
Selenium IDE 是一个用于 Web 测试的集成开发环境。是 Chrome 和 Firefox 的插件,可以记录和回放与浏览器的交互过程。
霍格沃兹测试开发
2022/04/19
8680
geckodriver、selenium、firefox版本对应关系
最近用selenium在centos服务器部署爬虫项目,centos默认安装了火狐浏览器,相应的驱动为geckodriver
week
2020/06/30
3.7K0

相似问题

无法在Mozilla Firefox浏览器中运行selenium代码

41

无法使用selenium在Jenkins中打开firefox浏览器

12

Selenium无法从Jenkins运行Firefox浏览器

10

Jenkins无法打开firefox窗口selenium (python )

11

在Jenkins中通过Selenium打开Firefox

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文