目前我有一个包含4个Selenium / Maven测试的GitHub Repo。我可以通过 mvn test
在我的本地计算机上单独运行每个测试我让Jenkins也在我的本地计算机上运行并创建了一个maven项目来拉取我的GitHub存储库,在其中一个测试中选择pom.xml(P_ProfileChangeMavenTest)然后执行测试作为我的maven目标。
当Jenkins运行我的测试时,它开始通过我的maven项目但是没有拔出Firefox浏览器来与我的测试进行交互。
的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test.profilechange</groupId>
<artifactId>Profile</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Profile</name>
<description>PRofile</description>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.39.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire</artifactId>
<version>2.16</version>
<type>pom</type>
</dependency>
</dependencies>
</project>
我对自动化相当新,并且在发送这些测试以在具有selenium网格的服务器上运行之前,我首先尝试在本地计算机上验证一切正常。
所有的帮助将非常受欢迎,因为我需要尽快使用。
先谢谢!
答案 0 :(得分:0)
我发现对我们有用的是使用testNg来运行测试。我们创建一个XML文件,其中包含我们想要运行的不同测试,我们使用
mvn test -D testng = testname.xml
TestNG是集成样式测试的一个很好的框架,而J单元测试框架更适用于单元测试。
xml文件的示例将是这样的。
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name=" Report - Create New Report and Add Fields By Double Click and Filter by Right Clicking" parallel="none" verbose="1">
<test verbose="1" name="is site available" preserve-order="true">
<classes>
<class name="com.somecompany.qa.seleniumautomation.PucDD">
<methods>
<include name="siteAvailable" />
</methods>
</class>
</classes>
</test>
<test verbose="1" name="Login as 'admin' 'password'" preserve-order="true">
<classes>
<class name="com.somecompany.qa.seleniumautomation.PucDD">
<methods>
<parameter name="login.user" value="admin" />
<parameter name="login.password" value="password" />
<include name="login" />
</methods>
</class>
</classes>
</test>
<test verbose="1" name="Create a new Report based on the provided data source" preserve-order="true">
<classes>
<class name="com.somecompany.qa.seleniumautomation.Reports">
<methods>
<parameter name="data.source.name" value="Orders" />
<include name="createNewReport"/>
</methods>
</class>
</classes>
</test>
<test verbose="1" name="Add the passed fields to the report by double clicking and add the passed filters by right clicking the field." preserve-order="true">
<classes>
<class name="com.company.qa.seleniumautomation.Reports">
<methods>
<parameter name="login.user" value="admin" />
<parameter name="login.password" value="password" />
<parameter name="fields" value="Customer Number,Customer Name,Order Date,Status,Shipped Date" />
<parameter name="filterCriteria" value="Customer Number:lte=300,Customer Number:gte=150,Product Lines:contains=a" />
<include name="addFilters"/>
</methods>
</class>
</classes>
</test>
<test verbose="1" name="Close the report" preserve-order="true">
<classes>
<class name="com.company.qa.seleniumautomation.Reports">
<methods>
<include name="close"/>
</methods>
</class>
</classes>
</test>
</suite>
答案 1 :(得分:0)
jenkins工作正在它自己的客户端上运行。它没有可见的UI,这就是你测试失败的原因。
您应该更改测试代码以使用Remote Webdriver或Selenium Grid
//need to start a selenium standalone server
DesiredCapabilities capability = DesiredCapabilities.firefox();
WebDriver driver = new RemoteWebDriver(new URL("http://SERVER_ADDRESS:4444/wd/hub"), capability);
请参阅Selenium Grid Wiki了解更多详情
答案 2 :(得分:0)
如果您使用命令行启动Jenkins,并且运行测试,那么您可以在浏览器上看到正在运行的测试。
使用命令行启动Jenkins的命令: java -jar jenkins.war
希望这有帮助。
答案 3 :(得分:0)
尝试从命令提示符下以管理员身份运行它,为我工作。
答案 4 :(得分:0)
如果你在Windows上:
1)。转到命令提示符: 输入“cmd”
2)。按Ctl + Shft + Enter(以管理员身份打开)
3).Type“Services.msc”
4)。它将打开Windows服务,选择“Jenkins”服务,右键单击&amp;打开属性并转到“登录”选项卡并选择“本地系统帐户”,然后选择“允许服务与桌面交互”。
5)。按“确定”。
6)。将打开一个对话框。单击“查看消息”窗口“此计算机上运行的程序正在尝试显示消息”。
现在你可以看到在同一台机器上运行的测试......享受!