繁体   English   中英

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

[英]Selenium Webdriver. Getting same text from different pages

我正在使用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");

结果:

鱼鹰邮轮797条评论1帕特雷大道,南帕诸岛,德克萨斯州钓鱼比赛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。它在第一页上给了我相同的结果:

鱼鹰邮轮797条评论1帕特雷大道,南帕诸岛,德克萨斯州钓鱼比赛328条点评钓鱼非常好我钓到了大约十二个鳟鱼。 他们允许2017年5月20日

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

我实际上解决了这个问题。 我只需要等到第一个元素加载后再尝试获取文本即可。

    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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM