繁体   English   中英

用Selenium WebDriver编写Java循环

[英]Write java loop with selenium webdriver

我正在使用Webdriver和Java自动执行UI流程。 在以下方面需要帮助:

单击链接,验证标题,单击浏览器后退按钮-对内容中的链接数重复上述步骤。 我正在使用页面对象设计,并且所有对象都在不同的类中。 我的代码是:

objectBase.clickLink1();
titleVeri(pageTitle1);
driver.navigate().back();
objectBase.clickLink2();
titleVeri(pageTitle2);
driver.navigate().back();

objectBase是保存所有页面对象的对象的名称。 clickLink1clickLink2是页面对象类上的方法,它们确实单击链接。 titleVeri是用于验证标题的实用程序方法。

我需要的是构造此内部循环,因为我对此有更多了解。

您可以为此使用地图,在objectBase中创建方法clickLink(key)

然后做类似的事情

Map<String,String> myMap = new TreeMap();
myMap.put("1",pageTitle1);
myMap.put("2",pageTitle2);

for(Map.Entry<String,String> entry : myMap.entrySet()){
    objectBase.clickLink(entry.getKey());
    titleVeri(entry.getValue());
    driver.navigate().back();
}

您所描述的内容并非严格可行。 原因是您无法获得指向函数的指针。

但是,您说您正在使用Page对象模式。 您是否有一个返回link1()的函数,而不是使用clickLink1()函数? 这样,您可以使用地图(如BevynQ所说)。

Map<WebElement, String> linksAndTitles = new HashMap();
linksAndTitles.put(page.getHomePageLink(), "Home");
linksAndTitles.put(page.getUserPageLink(), "Contact Details");
...and so on for each of the different links...

for (WebElement link: linksAndTitles.keySet()){
    link.click();
    titleVeri(linksAndTitles.get(link));
    driver.navigate().back();
}

附带说明一下...如果这些链接之一是注销链接...则必须单独进行测试。

此外...我真的不建议您进行此测试...这可能只是浪费时间。 在每个页面的isLoaded()函数中,都应该测试标题。 这样,无论何时调用page.get() ,标题都会被自动测试,而不是测试的一部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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