【问题标题】:Selenium Webdriver. Getting same text from different pages硒网络驱动程序。从不同的页面获取相同的文本
【发布时间】:2018-07-27 14:37:23
【问题描述】:

我正在使用 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 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。 它给了我与第一页相同的结果:

鱼鹰游轮 797 条点评 1 Padre Blvd, 南帕诸岛, 得克萨斯州 钓鱼比赛 328 条点评 钓鱼非常好,我钓到了大约十几条沙鳟鱼。他们允许 2017 年 5 月 20 日

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

【问题讨论】:

  • 您确实意识到在您的第二个代码示例中您仍在尝试打印出第一页中的字符串myText?这是一个错字,应该是myText2,还是你的问题?
  • 对不起,这是一个错字,我相应地更改了代码。无论如何,它仍然给我同样的结果。 @MivaScott
  • 你能用相关的 HTML 更新问题吗?
  • 我解决了这个问题。谢谢你的时间。 @DebanjanB

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 2018-08-27
    相关资源
    最近更新 更多