我想创建一个.xml文件(我将创建批处理文件以便将来从Jenkins运行它),以便能够按顺序运行每个测试类。我该如何编写每个测试?
以下是我的脚本示例:
package CRM;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class logowanie {
WebDriver driver = new FirefoxDriver();
@Test
public void test() throws InterruptedException {
driver.findElement(By.id("username")).sendKeys("***");
driver.findElement(By.id("password")).sendKeys("***");
driver.manage().timeouts().implicitlyWait(6, TimeUnit.SECONDS);
driver.findElement(By.id("_submit")).click();
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
}
@BeforeMethod
public void beforeTest() {
driver.manage().window().maximize();
driver.get("http://crm.serwis-grupowy-vgp.pl/login");
}
@AfterMethod
public void afterTest() throws InterruptedException {
driver.findElement(By.xpath("//a[@href='/logout']")).click();
driver.quit();
}}
这是.xml脚本:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false" preserve-order="true">
<test name="Test">
<classes>
<class name="PP_MartynaDealer.podstrona_mcall_MI"/>
<class name="PP_MartynaDealer.podstrona_HTG_czerw_sierp_MI"/>
<class name="PP_MartynaDealer.podstrona_rbp_tab_wykresy_MI"/>
<class name="PP_MartynaDealer.podstrona_cnptool_MI"/>
<class name="PP_MartynaDealer.podstrona_zakup_MI"/>
<class name="PP_MartynaDealer.podstrona_materialy_info_MI"/>
<class name="PP_MartynaDealer.podstrona_raporty_od_0110_MI"/>
<class name="PP_MartynaDealer.podstrona_HTG_wrze_gru_MI"/>
<class name="PP_MartynaDealer.podstrona_materialy_z_wydarzen_MI"/>
<class name="PP_MartynaDealer.podstrona_bonus_MI"/>
<class name="PP_MartynaDealer.podstrona_bonus_tabele_MI"/>
<class name="PP_MartynaDealer.podstrona_akcesoria_podstrony_MI"/>
<class name="PP_MartynaDealer.podstrona_nora_podstrony_MI"/>
<class name="PP_MartynaDealer.podstrona_moj_kalendarz_MI"/>
<class name="PP_MartynaDealer.podstrona_akcesoria_MI"/>
<class name="PP_MartynaDealer.podstrona_nora_MI"/>
<class name="PP_MartynaDealer.podstrona_autopart_MI"/>
<class name="PP_MartynaDealer.podstrona_wydarzenia_MI"/>
<class name="PP_MartynaDealer.podstrona_pisma_okolne_MI"/>
<class name="PP_MartynaDealer.podstrona_raporty_do_3009_MI"/>
<class name="PP_MartynaDealer.podstrona_baza_marketingowa_MI"/>
<class name="PP_MartynaDealer.logowanie_MartynaDealer"/>
<class name="PP_MartynaDealer.podstrona_uzytkownicy_MI"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
目前,每次执行的测试都会打开一个浏览器窗口,一次打开,在最后一个浏览器窗口打开后,测试在第一个窗口中开始,然后按顺序进行。 我应该以不同的方式编写测试,以便我可以按顺序运行它们吗?
答案 0 :(得分:0)
你可以添加preserve-order =&#34; true&#34;,所以在你的xml中,它会像:
<test name="Test" preserve-order="true">
另一种方法是添加
@Test(dependsOnMethods = { "testThatWillBeExecutedBeforeThis" })
每个测试用例。
答案 1 :(得分:0)
我相信你看到很多浏览器窗口弹出的原因是由于下面这行
WebDriver driver = new FirefoxDriver();
类级别的这一行导致浏览器在测试开始执行之前被分离出来。您可能希望将此行(实例化部分而非声明部分)移动到设置方法中。