使用selenium webdriver打印所有<loc>标记值

时间:2017-06-12 09:55:38

标签: selenium selenium-webdriver

public class URL {

    WebDriver driver;
    @Test
    public void test_URL() throws InterruptedException{

        driver = new FirefoxDriver();

        //driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

        driver.get("https://www.proptiger.com/city-image-sitemap.xml");

        List<WebElement> links = driver.findElements(By.tagName("loc"));
        System.out.println(links.size());

        for(int i=0; i<links.size();i++){
            //Thread.sleep(200);
            System.out.println(i+ "."+links.get(i).getText());
        }
    }
}

突然间停止执行。没有给出所有标签值。 我想要这个页面中的所有链接。

3 个答案:

答案 0 :(得分:0)

Selenium无法处理XML 。它只处理HTML。 xml解析有各种插件可以帮助你。

您的问题在stackoverflow上有解决方案。请看看这个 - https://stackoverflow.com/a/8445497

答案 1 :(得分:0)

您可以使用不同的方法通过Selenium处理XML。试试这个xpath:// * [name()=&#39; loc&#39;]来查找所有标签值

试用此代码:

    System.setProperty("webdriver.gecko.driver", "src/geckodriver");
    WebDriver driver = new FirefoxDriver();
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

        driver.get("https://www.proptiger.com/city-image-sitemap.xml");

        List<WebElement> links = driver.findElements(By.xpath("//*[name()='loc']"));
        System.out.println(links.size());

        for(int i=0; i<links.size();i++){
            //Thread.sleep(200);
            System.out.println(i+ "."+links.get(i).getText());
        }

答案 2 :(得分:0)

尝试使用此代码对我非常有用

   driver.get("url");

    List<WebElement> links = driver.findElements(By.xpath("//*[contains(@class,'text') and contains(text(),'https')]"));
    System.out.println(links.size());

    for(int i=0; i<links.size();i++){
        //Thread.sleep(200);
        System.out.println(i+ "."+links.get(i).getText());
    }