0

我一直在尝试用 selenium 解析网页中的这段特定文本,但无法弄清楚为什么我无法显示我想要的文本。页面上的代码片段是这样的

<div id="BVRRRatingOverall_Review_Display" class="BVRRRating BVRRRatingNormal BVRRRatingOverall">
<div class="BVRRLabel BVRRRatingNormalLabel"/>
<div class="BVRRRatingNormalOutOf">
<span class="BVRRNumber BVRRRatingNumber">4</span>
<span class="BVRRSeparatorText">out of</span>
<span class="BVRRNumber BVRRRatingRangeNumber">5</span>
</div>
</div>

我想在哪里获得文本“4 out of 5”。我正在使用 firebug 检查我的 xpath/cssSelector 是否有效,但 selenium 仍然找不到文本。我尝试了不同的等待和 cssSelectors 实现来尝试解决这个问题。似乎没有任何效果。我目前正在使用的代码是

String Url2 = "http://www.walmart.com/catalog/allReviews.do?product_id=16207347";
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get(Url2);
System.out.println("test" + driver.findElement(By.cssSelector(".BVRRSeparatorText")).getText());

我只是想将“test out”打印到屏幕上,但我只打印“test”。有谁知道我怎样才能让它工作?我环顾了互联网,但没有发现任何工作。

我也在为这种情况测试的等效 xpath 是//*[@id='BVRRRatingOverall_Review_Display']/div[@class='BVRRRatingNormalOutOf']/span[@class='BVRRSeparatorText']

编辑*我认为问题是因为文本从未真正显示在网页上。它的文本只有在将鼠标悬停在页面上的元素上时才能看到。

4

1 回答 1

0

您可以改为获取评级明星图像的替代文本。

Ruby 语法是(不确定其他语言的确切语法,但应该存在类似的):

e = driver.find_element(:css, ".BVImgOrSprite")                                                    
puts e.attribute('alt')                                                                       
# => 4 out of 5       
于 2012-04-30T16:38:21.623 回答