我有包含游戏类别列表的类别页面,我需要打开每个类别并验证此类别页面标题是否与类别列表中相同,然后对每个类别执行相同的操作。测试场景应如下所示:
- 打开类别页面
- 列出所有类别
- 对于每个类别获取类别文本,然后单击类别
- 获取打开的类别页面标题
- 将页面标题与类别文本进行比较
- 导航回"类别"页面
- 对所有类别重复此操作
这是代码,它通过了第一个类别,但从第二个类别失败,并给出了过时的元素异常,因为它需要再次声明类别列表
我怎样才能继续循环列表而不每次都声明它?!
Categories.PageFrmBanner(By.xpath(testData.getParam("CategBannerLocator")));
List<WebElement> CategoriesList = Categories.ElementsList(By.xpath(testData.getParam("CategoriesListLocator")), testData.getParam("TagName"));
for(WebElement Element : CategoriesList)
{
String ElementText = Element.getText().toLowerCase();
Element.click();
Categories.WaitForElementVisibilty(By.xpath(testData.getParam("CategoryPageTitleLocator")));
String CategoryText = driver.findElement(By.xpath(testData.getParam("CategoryPageTitleLocator"))).getText().toLowerCase();
Categories.compareObjectValue(testCase, "", ElementText, CategoryText);
log.info(ElementText + "Opened successfully");
driver.navigate().back();
}
在此处查找类别页面以供参考, "类别"页
每次重新加载页面或导航到另一个页面时,找到的对象都会丢失,从而导致元素过时。
更好的方法是将文本和链接保存在数组中,并且对于每个链接访问页面并检查标题,在这种情况下,您使用的是文本而不是对象。