b = Watir::Browser.new :firefox
url_input = "www.url.com"
b.goto url_input
b.driver.manage.timeouts.implicit_wait = 100
h3s = b.h3s class:"class-name"
for h3 in h3s
h3.wait_until_present
as = h3.as
for a in as
# puts a.text
name = h3.text
puts name
end
end
代码有时打印所有h3标签的预期名称,但有时当我从终端运行程序时,它只是不打印任何内容并最终出现如下错误:
“/。rvm / rubies / ruby-2.3.0 / lib / ruby / 2.3.0 / net / protocol.rb:158:在`rbuf_fill'中:Net :: ReadTimeout(Net :: ReadTimeout)”。
当我尝试打印a.text或者当我尝试通过执行url = a.attribute_value('href')
来获取标记的url并打印出来时,它永远无法工作。对我而言,它有时会运行,有时却不会运行,这似乎很奇怪。我怀疑这与时间有关,但我不明白Watir的时间是如何工作的。
答案 0 :(得分:0)
事实证明这是一个时间问题。最终我得到了它的工作:
for a in as
a.wait_until_present
if a.when_present
name = a.text
url = a.attribute_value('href')
end
end
这有时有效,有时却没有。它在随机位置解析数据的过程中停了几次。叹了口气,我最终得到了我需要的数据。