繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM