【发布时间】:2019-05-21 14:22:12
【问题描述】:
目标:使用 Watir 打印从几个关键字输入到搜索引擎(在本例中为 chrome)搜索到的超链接数组。
事情是我下面的代码在过去一年中运行良好。对其进行了多次测试,但在 Chrome 和元素或选择器的范围内发生了一些变化,或者 watir 已经弃用了某些功能,但我使用的 ruby 代码行数很少。它只是挂起。(编辑终端中没有产生任何结果,实际上并没有挂起)我已经仔细研究过这个,只有一个类似案例的其他链接,在那里我得到了我以前的代码来自,但现在不再有效:Show searched links url in command line with watir
require 'watir'
browser = Watir::Browser.new:chrome
browser.goto 'google.com'
browser.text_field(title: 'Search').set 'watir + ruby'
browser.button(name: 'btnK').click
sleep 3
links = browser.h3s(class: 'r').map(&:link)
hrefs = links.map(&:href)
links.each { |link| puts "#{link.data_href || link.href}" }
sleep(900)
期望的输出(用于工作) Terminal Displaying hyperlinks
【问题讨论】:
-
“它只是挂起”是什么意思?有例外吗?如果是浏览器未连接,您需要仔细检查您的 Chromedriver、Watir 和 Selenium-WebDriver 是否是最新的。
-
请注意,Google 结果的标记似乎已更改。您需要
links = browser.divs(class: 'r').map(&:link)(将h3s更改为divs)。这只会导致没有结果而不是挂起,所以我猜这不是直接的问题。 -
@JustinKo 你是 100% 正确的。 Google 结果将我的目标 html 元素更改为 css 选择器。它从“h3s”切换到“divs”。感谢您对最初评论的反馈。浏览器会连接但不会产生输出或错误。 (这是我的第一个堆栈溢出问题,感谢您的快速回复!)
标签: ruby google-chrome watir