繁体   English   中英

Watir:如何获取具有相同类名的多个跨度的inner_html

[英]Watir: How do i get inner_html of multiple span, with same class name

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

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

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

我正在尝试从此页面获取与天气有关的信息

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

您要定位的元素包含在具有唯一数据属性的<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 演示的 watir可以使用数据属性作为定位器,并进行一些细微调整。

旁注:对Google执行自动搜索可能违反了其服务条款,您可能会发现自己已被屏蔽。 您应该调查是否可以使用其许多API之一来收集此数据。

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

不要这样做: browser.span(:class => "_Xbe kno-fv")

这样做: browser.span(css: "._Xbe.kno-fv")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM