我有一个从相同的基类继承的以下硒测试套件,当我运行整个测试套件时,如何使测试使用相同的Web驱动程序实例?我也想单独运行每个测试。我相信这将大大减少运行套件所需的时间。
该测试是从maven运行的,而maven依次运行每个测试类。
@RunWith(Suite.class)
@SuiteClasses({
AdminPortalTestSuite.class,
DevPortalTestSuite.class,
CommonTestSuite.class
})
public class SeleniumTestSuite {
}
所有测试均继承自的基类
@BeforeClass
public static void setUp() throws Exception {
if (null == baseUrl || !baseUrl.startsWith("https://")) {
baseUrl = "https://localhost:8443";
}
if (null == browser || browser.startsWith("${")) {
browser = "firefox";
}
//retrieve properties including locale.
retrieveProperties();
Thread.sleep(4000);
setUpDriver();
}
@After
public void tearDownAfterTest() {
openUrl(LIST_PARTNERS);
adminPortalLogout();
openUrl(DASHBOARD);
developerPortalLogout();
driver.manage().deleteAllCookies();
}
@AfterClass
public static void tearDown() throws Exception {
BaseFunctionalTestCase.driver.quit();
}
测试例
public class APApplicationFunctionalTestCase extends BaseFunctionalTestCase {
/**
* Test validation when creating a new application.
*/
@Test
public void testApplicationValidation() {
Assume.assumeTrue(preHtml5);
final String partnerName = randomize("partner");
//create partner
createPartnerThroughAP(partnerName);
adminPortalLogin();
openUrl(ADD_APPLICATION + partnerName);
waitForId("applicationView.applicationName");
findById("submit-button").click();
waitForId("submit-button");
//check validation
assertTrue("Failed to validate application name",
isTextPresent(resolveAPMessage("partner", "application.messages",
"NotEmpty.applicationEditView.applicationView.applicationName")));
assertTrue("Failed to validate application username",
isTextPresent(resolveAPMessage("partner", "application.messages",
"NotEmpty.applicationEditView.applicationView.applicationUserName")));
assertTrue("Failed to validate application password",
isTextPresent(resolveAPMessage("partner", "application.messages",
"Password.applicationEditView.applicationView.applicationPassword")));
assertTrue("Failed to validate application password confirmation",
isTextPresent(resolveAPMessage("partner", "application.messages",
"Length.applicationEditView.applicationPasswordConfirmation")));
}
我对JUnit不太满意…似乎您正在尝试此处建议的解决方案: jUnit4.x中Suite执行之前和之后的挂钩
这建议您将@BeforeClass移到SeleniumTestSuite类中。
initiate=Init() 类二(UnitTest.TestCase):Initiate.Browser_Launch()
在Selenium PageObjects中,我没有实例化任何web驱动程序实例,也没有如下所示进行编码 我试图在Selenium Page对象函数中实现以下代码。 有谁能建议我,在使用页面对象模型时,如何在上述代码中使用webdriver实例?
我编写了以下代码,以使用selenium webdriver V 2.53.0在Microsoft Edge浏览器中启动网页:
线程“main”org.testng.testngexception:两个套件不能具有相同的名称:在org.testng.testng.checksuitenamesinternal(testng.java:1019)在org.testng.testng.checksuitenames(testng.java:1012)在org.testng.testng.sanitycheck(testng.j
我已经尝试了各种各样的解决方案。系统配置: > MacOS Catalina Python 3.7.6(蟒蛇) 硒3.141 铬v81,铬驱动v81。 错误:无法连接到服务chromeDrive。 我在各种驱动程序和浏览器上也尝试过同样的方法:Gecko/Firefox(新安装)、Safaridriver/Safar——都有相同的错误。 chromedriver、geckodriver和usr/l
这是我到目前为止所拥有的: 一个基于Webdriver的Java类,它可以登录到应用程序并进入主页: 现在我们看到有两页:1。登录页面,其中我必须输入用户名和密码,以及主页,一旦身份验证成功,我将被带到这里。 现在我想使用Pagefactory将其实现为PageObjects: 对于登录页面,我不确定如何实现它,以及调用这些页面的测试。