如何使用TestNG框架和Jenkins运行Selenium测试 [英] How to run Selenium tests using TestNG framework and Jenkins
问题描述
我想使用Jenkins运行在TestNG框架中编写的Selenium测试。
I want to run Selenium tests written in TestNG framework using Jenkins.
在jenkins job(Freestyle项目)中配置的命令:
The command configured in jenkins job (Freestyle project):
java -cp J:\taf\testng\*;J:\taf\workspace\TestNGExamples\bin;J:\automation\* org.testng.TestNG J:\taf\workspace\TestNGExamples\testng1.xml
注意:对于 -cp参数
,给定 testng jar,test classes和selenium jar的目录路径
当我运行作业(立即构建
选项)时,它会对Selenium的创建会话活动产生影响并给出错误。
When I run the job (Build Now
option), it is getting struck on create session activity of Selenium and giving the error.
注意:
同样的命令运行 从命令行运行。
The same command ran successfully when ran from the command line.
从控制台输出错误日志(jenkins )
Error Log from Console Output: (jenkins)
Started by user Naveen
Building in workspace C:\Program Files (x86)\Jenkins\workspace\TestNG Example
[TestNG Example] $ cmd /c call C:\Windows\TEMP\hudson2261889395366550414.bat
C:\Program Files (x86)\Jenkins\workspace\TestNG Example>java -cp J:\taf\testng\*;J:\taf\workspace\TestNGExamples\bin;J:\automation\* org.testng.TestNG J:\taf\workspace\TestNGExamples\testng1.xml
[TestNG] Running:
J:\taf\workspace\TestNGExamples\testng1.xml
1481801204206 geckodriver INFO Listening on 127.0.0.1:1387
Dec 15, 2016 4:56:44 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
1481801204827 mozprofile::profile INFO Using profile path C:\Windows\TEMP\rust_mozprofile.KDz9DWYpWQAM
1481801204829 geckodriver::marionette INFO Starting browser C:\Program Files\Mozilla Firefox\firefox.exe
1481801204831 geckodriver::marionette INFO Connecting to Marionette on localhost:7795
1481801206090 Marionette INFO Listening on port 7795
###!!! [Parent][MessageChannel] Error: (msgtype=0x2E007D,name=PBrowser::Msg_Destroy) Channel error: cannot send/recv
JavaScript error: resource://app/modules/ContentCrashHandlers.jsm, line 75: TypeError: browser.permanentKey is not a non-null object
###!!! [Parent][MessageChannel] Error: (msgtype=0x2E007D,name=PBrowser::Msg_Destroy) Channel error: cannot send/recv
Dec 15, 2016 4:56:47 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
###!!! [Parent][MessageChannel] Error: (msgtype=0x2E007D,name=PBrowser::Msg_Destroy) Channel error: cannot send/recv
以下是测试类:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class SeleniumTests {
@Test
public void test1(){
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.co.in");
driver.quit();
}
}
以下是 testng1.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Default suite">
<test verbose="2" name="Default test">
<classes>
<class name="SeleniumTests"/>
</classes>
</test> <!-- Default test -->
</suite> <!-- Default suite -->
环境详情:
- Jenkins - 2.19.4(作为Windows服务)
- Java - 1.8
- TestNG - 6.8.5
- Selenium - 3.0.1
- Firefox - 51
- geckodriver - 0.11.1
- Os - Windows 7 - 64位
- Jenkins - 2.19.4 (as Windows Service)
- Java - 1.8
- TestNG - 6.8.5
- Selenium - 3.0.1
- Firefox - 51
- geckodriver - 0.11.1
- Os - Windows 7 - 64 bit
推荐答案
这不是TestNG或Selenium问题。当Jenkins被安装为Windows服务时,有时会出现此错误。在像Tomcat或GlassFish这样的servlet容器中安装Jenkins,它应该有所帮助。
This is not TestNG or Selenium issue. This error sometimes occure when Jenkins is insalled as Windows Service. Install Jenkins inside servlet container like Tomcat or GlassFish and it should help.
这篇关于如何使用TestNG框架和Jenkins运行Selenium测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!