Selenium 和 TestNG 都在一个浏览器中测试
·
问题:Selenium 和 TestNG 都在一个浏览器中测试
我有抽象类,在其中初始化 webdriver。所有执行测试的类都继承自他。我想减少测试时间,为所有测试打开一个浏览器。
class AbstractClassCase {
public static WebDriver driver;
@BeforeClass
@Parameters({"webDriver", "applicationHost", "applicationPort", "driverHost", "driverPort", "username", "password"})
public void setUp(
String webDriverIdentifier,
String applicationHost,
@Optional String applicationPort,
@Optional String driverHost,
@Optional String driverPort,
@Optional String username,
@Optional String password){
driver = new FirefoxDriver();
driver.get("localhost");
login(username, password)
}
@AfterСlass
public void tearDown() {
driver.quite();
}
}
public class TestButton extends AbstractClassCase {
@Test
public void testClickButtonNo() {
WebElement button = driver.findElement(By.id("button-no"));
button.click();
WebElement status = driver.findElement(By.id("button-status"));
Assert.assertEqual("Cancel", status.getText());
}
}
和其他考试班本着同样的精神。
我怎样才能重新配置这个类,让浏览器打开一次?
解答
如果您想在开始时打开浏览器并运行所有方法然后关闭它。
我建议遵循 2 个步骤。
Step 1:在带有 @BeforeSuite && @AfterSuite 的方法中包含浏览器调用代码,用于关闭浏览器/驱动程序会话。这可以确保这些测试在测试套件之前和之后运行一次。
protected static WebDriver Browser_Session;
@BeforeSuite
public void beforeSuite() {
Browser_Session=new FirefoxDriver();
Browser_Session.manage().timeouts().implicitlyWait(30000, TimeUnit.MILLISECONDS);
}
@AfterSuite
public void afterSuite() {
Browser_Session.quit();
}
Step2 :打开 testng.xml 并将所有此类(测试方法)包含在单个套件下,从而确保首先调用浏览器(通过 Selenium),然后其余所有方法都在同一个浏览器中运行。 
这里“Class Init”包含浏览器启动代码,ClassA 和 ClassB 是 Init 的子类。
希望这可以帮助
更多推荐

所有评论(0)