如何在使用findelements时从xpath获取文本

时间:2017-05-16 20:26:35

标签: java selenium xpath selenium-webdriver

我想使用findelements将所有文本放到一个对象中,然后查看列表中是否存在字符串

Browser_Launch("chrome");
        sign_in();
        String a = null;
        Element_to_be_clicked("xpath", "//*[@id='history-guide-item']/a");
        List<WebElement> text = driver.findElements(By.xpath("//ol[@class='item-section']//li//div//a"));
        for (int i = 0; i < text.size(); i++) {
            a = text.get(i).toString();
            System.out.println(a);
        }
        if (a.contains("Will & Grace - Back This Fall")) {
            System.out.println("test passed");
        } else {
            System.out.println("test failed");
        }

网站:Youtube 页面:历史

测试:尝试将历史记录页面中显示的视频的所有名称都添加到对象中,以便我可以断言

谢谢

3 个答案:

答案 0 :(得分:1)

首先,您需要将a声明为字符串列表,如:List<String> a = new ArrayList<>();

其次,由于textList<WebElement>,您应该获取网络元素的文本,然后比较锚标记链接的getText()

因此a = text.get(i).toString();代替a.add(text.get(i).getText());而不是 Browser_Launch("chrome"); sign_in(); List<String> a = new ArrayList<>(); Element_to_be_clicked("xpath", "//*[@id='history-guide-item']/a"); List<WebElement> text = driver.findElements(By.xpath("//ol[@class='item-section']//li//div//a")); for (int i = 0; i < text.size(); i++) { a.add(text.get(i).getText()); System.out.println(text.get(i).getText()); } if (a.contains("Will & Grace - Back This Fall")) { System.out.println("test passed"); } else { System.out.println("test failed"); } 。这样我们就可以将所有视频名称添加到列表中。

更新代码:

http://crmorg/v2/api/

答案 1 :(得分:0)

你在循环中什么都不做,试试这个:

Browser_Launch("chrome");
        String textToFind = "Will & Grace - Back This Fall";
        boolean isTextPresent = false;
        sign_in();
        Element_to_be_clicked("xpath", "//*[@id='history-guide-item']/a");
        List<WebElement> text = driver.findElements(By.xpath("//ol[@class='item-section']//li//div//a"));
        for (int i = 0; i < text.size(); i++)
        {
            if (text.get(i).toString().contains(textToFind))
            {
                isTextPresent = true;
                break;
            }
        }

        if (isTextPresent)
        {
            System.out.println("test passed");
        } else 
        {
            System.out.println("test failed");
        }

答案 2 :(得分:0)

此xpath(//ol[@class='item-section']//li//div//a)错误。

使用//a[@dir='ltr']

进行更改