如何在元素列表中循环,需要打开每个元素页面并将元素标题与页面标题进行比较?使用selenium java

时间:2017-02-12 13:31:25

标签: java selenium automation

我有类别页面,其中包含游戏类别列表,我需要打开每个类别并验证此类别页面标题与类别列表中的相同,然后对每个类别执行相同操作。 测试场景应该是这样的:

  1. 打开类别页面
  2. 列出所有类别
  3. 对于每个类别获取类别文本,然后单击类别
  4. 获取已打开的类别页面标题
  5. 将网页标题与类别文字进行比较
  6. 导航回“类别”页面
  7. 重复所有类别
  8. 这是代码,它传递给第一类但从第二类失败并给出陈旧元素异常,因为它需要再次声明类别列表

    如何在列表中继续循环而不是每次都声明它?!

    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();
                }
    

    在此处查找类别页面以供参考,  Categories Page

1 个答案:

答案 0 :(得分:0)

每次重新加载页面或导航到另一页时,找到的对象都将丢失,从而导致陈旧的元素。

更好的方法是保存数组中的文本和链接,并为每个链接访问页面并检查标题,在这种情况下,您使用的是文本而不是对象。