0

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

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

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

objectBase是我保存所有页面对象的对象的名称。clickLink1并且clickLink2是点击链接的页面对象类上的方法。titleVeri是验证标题的实用方法。

我需要的是构建这个内部循环,因为我有更多这个。

4

2 回答 2

0

您所描述的严格来说是不可能的。原因是您不能拥有指向函数的指针。

但是,您说您正在使用 Page 对象模式。clickLink1()您是否有一个返回的函数,而不是使用该函数link1()?这样你就可以使用地图(就像 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(),标题都会被自动测试,并且它不是您测试的一部分。

于 2013-09-10T00:00:59.810 回答
0

您可以为此使用地图,在 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();
}
于 2013-09-09T22:22:59.387 回答