打印物品

时间:2018-04-11 18:01:02

标签: java selenium-webdriver

我试图在Selenium中用Java创建一个for循环,它将打印出页面上的所有项目名称。我无法让for循环执行它。它可以导航到页面很好,但它不会打印出所有项目的名称。

WebDriver driver2 = new ChromeDriver(c);
    driver2.get("https://na.leagueoflegends.com/en/");
    driver2.manage().window().maximize();
    driver2.findElement(By.cssSelector("a.continue")).click();
    driver2.findElement(By.xpath("//*[@id='riotbar-navbar']/a[2]")).click();
    driver2.findElement(By.xpath("//*[@id='toc']/div[3]/div[2]/div[3]/div[2]/div/a/img")).click();

    //Method for getting number and names of items on the Items page.

    List <WebElement> numberofItems = driver2.findElements(By.tagName("li"));
        int a = numberofItems.size();
            System.out.println("Number of Items: " + a);

    List <WebElement> namesofItems = driver2.findElements(By.className("item-name"));
        String[] items = new String[namesofItems.size()];
        int i = 0;
        for(WebElement e : namesofItems)
            items[i] = e.getText().toString();
                i++;

当我投入一个打印声明尝试获取某些东西时,我只得到数字1.我知道这是一个征税操作,但我想打印所有52个项目名称是我的目标。我发现的问题是每个&#34; item-name&#34;是在不同的父母&#34; item-grid-(一系列数字)下。我是否需要导航到每个孩子并获得课程,或者我目前的方法中是否存在我缺少的东西?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

尝试第二部分的xpath选择器。你当前的一个正在返回0。

List<WebElement> namesofItems = driver2.findElements(By.xpath("//li[not(@style)]//div[@class='item-name']"));
        System.out.println("Number of Items: " + namesofItems.size());

        for(WebElement w:namesofItems)
            System.out.println(w.getText());

有一些项目是隐藏的,如果你不使用not(@style)那么你会看到没有显示的额外项目(例如,&#39; Brawler&#39; s Gloves&#39之后的额外项目;在inspect元素控制台中。检查这个额外项目的li标签中的样式项。你会注意到样式属性存在。这个样式在其他可见<中不存在/ strong> ones)。