Selenium Webdriver。从不同页面获取相同的文字

时间:2018-02-16 16:25:43

标签: java maven selenium-webdriver selenium-chromedriver webautomation

我使用ChromeDriver访问TripAdvisor.com并搜索"钓鱼"活动。我可以使用以下方法在第一页上提取有关提供者的所有信息:

    String myText = driver.findElement(By.xpath("//*[@id=\"search_result\"]/div/div[1]/div[1]/div[2]")).getText();
    System.out.println(myText + "\n");

结果:

Osprey Cruises 797条点评 1 Padre Blvd,南帕德里岛,德克萨斯州 钓鱼比赛328条评论 钓鱼非常好我钓到了十几条沙鳟鱼。他们允许2017年5月20日

但是当我进入下一页时:

    driver.findElement(By.xpath("//*[@id=\"search_result\"]/div/div[3]/div/a[2]")).click();

并尝试使用

从第二页中提取结果
    String myText2 = driver.findElement(By.xpath("//*[@id=\"search_result\"]/div/div[1]/div[1]/div[2]")).getText();
    System.out.println(myText2 + "\n");

我通过使用Chrome并检查第2页上的元素来获取XPath。 它给了我与第一页相同的结果:

Osprey Cruises 797条点评 1 Padre Blvd,南帕德里岛,德克萨斯州 钓鱼比赛328条评论 钓鱼非常好我钓到了十几条沙鳟鱼。他们允许2017年5月20日

如何从第2页获得结果?我是Selenium的新手,感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

我确实解决了这个问题。我只需要等到第一个元素加载,然后尝试获取文本。

    WebDriverWait wait = new WebDriverWait(driver, 20);
    By firstResult = By.xpath("//*[@id=\"search_result\"]/div/div[1]/div[1]/div[2]");

    // get the "firstResult" element
    element = wait.until(ExpectedConditions.presenceOfElementLocated(firstResult));//waits until "firstItem" is loaded
    wait.until(ExpectedConditions.stalenessOf(element));

然后得到文字:

    String myText2 = driver.findElement(By.xpath("//*[@id=\"search_result\"]/div/div[1]/div[1]/div[2]")).getText();
    System.out.println(myText2 + "\n");