如何在watir execute_script之后更改dom



我正在使用诺科吉里(Nokogiri)从http://www.englandgallery.com/artists.php中刮下艺术家列表。我需要使用watir,因为该页面使用JavaScript加载艺术家。我的代码看起来像这样

browser = Watir::Browser.new(:phantomjs)
browser.goto "http://www.englandgallery.com/artists.php"
browser.execute_script("javascript:loadContent('ALL');")
indexPage = Nokogiri::HTML(browser.html)
artists = indexPage.css('a.artistlink')
artists.each do |artist|
    puts artist.text
end

默认情况下,页面仅显示当代艺术家,因此您需要执行JS来加载所有艺术家。我敢肯定,loadContent('ALL')被执行,并实际上将所有艺术家加载到页面上,但是只有当代艺术家被选为artists数组。我想念什么?我需要以某种方式重新加载浏览器以获取当前的DOM?

似乎在执行javascript:loadContent('ALL');之后,需要一些时间才能实际更新列表。您可以尝试sleep几秒钟。

browser = Watir::Browser.new(:phantomjs)
browser.goto "http://www.englandgallery.com/artists.php"
browser.execute_script("javascript:loadContent('ALL');")
sleep 5
indexPage = Nokogiri::HTML(browser.html)
artists = indexPage.css('a.artistlink')
artists.each do |artist|
    puts artist.text
end

相关内容

  • 没有找到相关文章

最新更新