[英]To run tests on different browsers using Selenium webdriver+ TestNG+Java
[英]Run selenium tests on different browsers via TestNG
谁能帮我,因为我真的不明白:
那是我的TestNG文件:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="GRID SAMPLE TEST" parallel="tests" verbose="3" thread-count="2">
<test name="GRID EXECUTION WITH CHROME" parallel="classes" verbose="3" thread-count="2">
<parameter name ="browserType" value="chrome"/>
<classes>
<class name ="Tests"/>
<class name ="Tests2"/>
</classes>
</test>
<test name="GRID EXECUTION WITH FF" parallel="classes" verbose="3" thread-count="2">
<parameter name ="browserType" value="firefox"/>
<classes>
<class name ="Tests"/>
<class name ="Tests2"/>
</classes>
</test>
</suite>
那就是我的setUp方法:
RegistrationPage rp;
@BeforeClass
@Parameters("browserType")
public void setUp(String browserType) throws InterruptedException {
rp = new RegistrationPage();
if (browserType.equalsIgnoreCase("firefox")) {
Configuration.browser = "firefox";
} else if (browserType.equalsIgnoreCase("chrome")){
Configuration.browser = "chrome";
}
Configuration.baseUrl = "http://demoqa.com/registration/";
}
我正在使用Selenide,它是Selenium的包装,但这不是重点。 关键是我希望对chrome(此处为2)和firefox(至此处)运行相同的测试。 当我在调试时运行它们时,一切正常,在FF上进行了2个测试,在CHROME上进行了另外2个测试。 但是,当我在没有调试的情况下正常运行它们时(右键单击xml并以testNG的身份运行),那么我的所有测试都仅在FF(4)或仅在CHROME(4)上完成!
谁能解释为什么? 我在这里做错了吗?
它当前失败的原因是-您尝试在使用XML时并行运行测试(与调试模式相反,我认为调试模式在单个线程中运行)。
这两个测试(来自TestNG XML的test
元素)几乎同时执行,都设置了Configuration.browser
字段,该字段被定义为static ,这意味着-它仅存在一个实例,并且无论稍后执行哪个线程都将其覆盖。
可以通过依次执行测试或手动为每个线程创建一个单独的WebDriver实例(根据参数browserType
)并使用WebDriverRunner.setWebDriver()
而不是Configuration.browser
。
例如:
@BeforeTest
@Parameters("browserType")
public void setUp(String browserType) throws InterruptedException {
rp = new RegistrationPage();
Configuration.baseUrl = "http://demoqa.com/registration/";
if (browserType.equalsIgnoreCase("firefox")) {
WebDriverRunner.setWebDriver(new FirefoxDriver());
} else if (browserType.equalsIgnoreCase("chrome")){
WebDriverRunner.setWebDriver(new ChromeDriver());
}
}
希望这可以帮助。
采用 :
@BeforeTest
注释,然后它将使用您在testNG.xml的<test>
标记中提到的其他浏览器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.