【问题标题】:Show searched links url in command line with watir使用 watir 在命令行中显示搜索到的链接 url
【发布时间】:2016-04-29 05:37:30
【问题描述】:
我是 Ruby 新手,现在我正在尝试使用 watir。所以我需要在我的命令行中显示所有创建的 url。这是我的代码的开头:
browser = Watir::Browser.new
puts "1. Entering Google"
browser.goto "http://www.google.com"
search_text = "text"
puts " 2. enter "+ search_text +" in the search text field."
browser.text_field(:name, "q").set search_text
puts "3. click the 'Google Search' button."
browser.button(:name, "btnG").click
puts " First 10 links: "
有人可以帮助我吗?非常感谢 ! ;)
【问题讨论】:
标签:
ruby-on-rails
ruby
testing
watir
watir-webdriver
【解决方案1】:
链接存储在h3标签中,类名为'r',因此您可以通过以下方式获取链接元素的集合:
links = browser.h3s(class: 'r').map(&:link)
url 存储在 href 标记中,因此您可以通过以下方式获取 href 值数组:
hrefs = links.map(&:href)
所以要打印这个:
hrefs.each { |href| puts href }
但其中一些 href 会通过重定向,因此您可能需要这样做:
links.each { |link| puts "#{link.data_href || link.href}" }
【解决方案2】:
这是从特定页面元素中提取链接的通用方法。它指定容器元素(即div 标签),收集该容器中的links,并为每个链接打印text(或每个href——取决于块中指定的内容):
require 'watir-webdriver'
b = Watir::Browser.new
b.goto('http://www.iana.org/domains/reserved')
b.div(class: "navigation").links.each { |link| puts link.text}
b.div(class: "navigation").links.each { |link| puts link.href}