Java / Selenium(ieDriver) - 如何在每次Test运行中避免重复webapp登录之前的方法(jUnit)

时间:2015-11-30 18:36:59

标签: java internet-explorer selenium ssl junit4

我有Selenium IE驱动程序,用Java编码。此Webapp仅与IE9兼容。我必须使用SSL信任证书,然后使用Autoit_script绕过IE9中的这些Cert弹出窗口。 我想找到一个解决方案,我不必在每个新的Testcase /类中重复这段代码。 IE9变得非常慢,第一个Testcase没有完成执行,第二个浏览器实例打开。

有没有办法让这个代码放在某个方面,所以我不必在每个测试中重复它? 这是代码,只是登录到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部分添加新的测试信息,这不是一个聪明的方法。 :)

请指教。提前致谢!

2 个答案:

答案 0 :(得分:0)

我建议您使用单独的单例类“浏览器”或“驱动程序”来管理和处理浏览器。您可以在页面对象或测试中调用此类(这很难维护)。另一个建议是让页面对象成为您的登录页面,该页面将有一种方法可以在系统中登录,您可以在测试中调用它(根据需要创建多个不同的登录)。通过存储会话或一些快速而肮脏的黑客来模拟登录通常不是一个好主意,这就是我不推荐它的原因。这是一些信息link。希望能帮助到你。

答案 1 :(得分:0)

我创建了PageObjects Package。 然后创建Java类和方法名称" DriverLogin",在这个方法中我添加了客户端证书信息,具有IE功能的站点URL等。 然后我在Main Java class / PageObjects中调用了这个方法。

我创建了Junit Framwork并使用PageObjects java Method扩展每个Junit Test类。我不必一遍又一遍地复制和粘贴相同的代码。 ppphhheewwww!

它对我来说就像一个魅力。没有问题。谢谢大家的支持和反馈。 !!