![](/img/trans.png)
[英]How to run some code before each JUnit @Test method individually, without using @RunWith nor AOP?
[英]Java/Selenium (ieDriver) - how to avoid repeating the webapp login Before Method (jUnit) in each Test run
我有使用Java编写的Selenium IE驱动程序。 此Webapp仅与IE9兼容。 我必须使用SSL信任证书,然后使用Autoit_script绕过IE9中的这些证书弹出窗口。 我想找到一个不必在每个新的Testcase /类中都重复此代码的解决方案。 IE9变得如此缓慢,以至于第一个测试用例无法完成执行,第二个浏览器实例打开。
有没有办法以某种方式放置此代码,这样我就不必在每个测试中都重复它? 这是代码,仅登录到Web应用程序:
public class LoginACMSbutton {
private static WebDriver driver;
private String baseUrl;
@Before
public void setUp ()throws Exception {
DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
driver = new InternetExplorerDriver(ieCapabilities);
System.setProperty("webdriver.ie.driver","C:\\IEDriverServer.exe");
baseUrl =("https://My website Link/");
}
@Test
public void LogintoWeb() throws Exception {
driver.get(baseUrl);
Runtime.getRuntime().exec("C:\\Autoitscripts\\IElogin.exe");
try {
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = driver.switchTo().alert();
alert.accept();
} catch (Exception e) {
System.out.println("show error");
} //handle the popup
}
@After
public void End() throws Exception {
driver.close();
}
}
目前,我只是在@Test部分中添加新的测试信息,这不是明智的方法。 :)
请指教。 提前致谢!
我建议您使用一个单独的单例类“浏览器”或“驱动程序”来管理和处理浏览器。 您可以在页面对象或测试(很难维护)中调用此类。 另一个建议是在登录页面中设置一个页面对象,该页面对象将具有一种将您登录到系统中的方法,您可以在测试中调用该对象(根据需要创建任意数量的不同登录名)。 通常,通过存储会话或一些快速而肮脏的骇客来模拟登录不是一个好主意,这就是为什么我不建议这样做的原因。 这是一些信息链接 。 希望能帮助到你。
我已经创建了PageObjects包。 然后创建Java类和方法名称“ DriverLogin”,在此方法中,我添加了客户端证书信息,具有IE功能的站点URL等。然后,在主Java类/ PageObjects中调用了此方法。
我创建了Junit Framwork,并使用PageObjects java方法扩展了每个Junit Test类。 我不必一遍又一遍地复制和粘贴相同的代码。 ppphhheewwww!
它对我来说就像一种魅力。 没有问题。 谢谢大家的支持和反馈。 !!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.