Watir:我如何获得具有相同类名的多个span的inner_html

时间:2017-02-06 20:28:21

标签: html ruby watir watir-webdriver

我正在使用此代码来获取span类的inner_html

weather = browser.span(:class => "_Xbe kno-fv").inner_html
puts weather

但是,页面中存在具有相同类的多个inner_html。如何一次检索所有这些?

我正试图从page

获取有关天气的信息
weather = browser.span(:class => "_Xbe kno-fv").text
puts weather

以上代码,打印,文本但不一致。我相信,因为多个元素存在同一个类或信息是动态的,因此?我不确定。有没有办法得到这个? 4

第一次运行结果

Examples:
  | Search    |
  | Bangalore |  741 km²

第二轮结果

Examples:
  | Search    |
  | Bangalore |  17°C, Wind E at 3 km/h, 69% Humidity

2 个答案:

答案 0 :(得分:2)

您定位的元素包含在具有唯一数据属性的<div>中。我建议使用这种方法:

require 'watir'    
b = Watir::Browser.new :chrome
b.goto "https://www.google.com/?gfe_rd=cr&ei=w7-YWN75OsyAoAPK_oDYBQ#q=bangalore" 

puts b.div(:data_attrid => "kc:/location/citytown:current weather").text
#=> Weather: 59°F (15°C), Wind S at 2 mph (3 km/h), 83% Humidity

供参考 - 因为@JustinKo demonstrates - watir可以使用数据属性作为定位器并进行一些小调整。

旁注:对Google进行自动搜索可能违反了他们的服务条款,您可能会发现自己遭到阻止。您应该调查是否可以使用其中一个API来获取此数据。

答案 1 :(得分:1)

我不确定它是否是您问题的原因,但一个重要问题是当类定位器只能接受一个时,您使用多个类值:

不要这样做:mat <- structure(list(Gene1 = c("1", "0", "-1", "1"), Gene2 = c("0", "-1", "0", "1"), Gene5 = c("-1", "0", "1", "0"), Gene7 = c("1", "1", "1", "0")), class = "data.frame", row.names = c("Sample1", "Sample2", "Sample3", "Sample4")) score <- structure(list(GeneName = c("Gene1", "Gene2", "Gene3", "Gene4", "Gene5", "Gene6", "Gene7"), Score = c("0.5", "0.3", "0.2", "0.6", "0.7", "0.1", "0.4")), class = "data.frame", row.names = c(NA, -7L))

执行此操作:browser.span(:class => "_Xbe kno-fv")