首页 > 解决方案 > 如何点击下一个班级名称?

问题描述

我有<a class="row-title">最多 21 个 Web 元素的相同类属性。我可以使用 get text 方法获取所有 21 个元素,但我想执行这样的操作。

  1. 首先我必须点击 XPathdriver.findElement(By.xpath(".//*[@id='menu-posts-presentation']/a/div[3]"));
  2. 然后我想点击<a class="row-title">第一个班级名称
  3. 第 3 步我也想点击 xpathdriver.findElement(By.xpath(".//*[@id='publish']")).click();
  4. 然后我必须再次单击第 1 步中的同一个 XPath,然后单击第二个类名而不是第一个,然后再次单击第 3 步中的 XPath
  5. 所以我想迭代这个最多 21 个类名。

    Test(priority = 2)
    public void myfsk1(){ 
    
        driver.findElement(By.xpath(".//*[@id='menu-posts-presentation']/a/div[3]")).click();
        List<WebElement> elements = driver.findElements(By.className("row-title"));
        System.out.println(elements.size());
    
        for (int i=1;i<=elements.size()-1;i++)
        {
            System.out.println(elements.get(i).getText());
            Reporter.log(elements.get(i).getText());
    
        }
    

标签: javaarraysseleniumselenium-webdriverarraylist

解决方案


请不要忘记添加一些断言来检查它是否真的被点击了,现在这个测试只是点击了一些链接但什么都不检查。此外,您必须添加预期条件以避免单击未加载的元素。

    Test(priority = 2)
    public void myfsk1 () {
        List<WebElement> elements = driver.findElements(By.className("row-title"));
        int listSize = elements.size();
        System.out.println(listSize);
        WebElement innerElement;

        for (int i = 1; i < listSize; i++) {
            driver.findElement(By.id("menu-posts-presentation"))
                  .findElement(By.xpath("./a/div[3]"))
                  .click();

            // Search again due to page refresh
            elements = driver.findElements(By.className("row-title"));
            innerElement = elements.get(i);

            System.out.println(innerElement.getText());
            Reporter.log(innerElement.getText());
            innerElement.click()

            driver.findElement(By.id("publish").click;
        }
    }

推荐阅读