[英]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.