我使用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的新手,感谢任何帮助,谢谢。
答案 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");