Selenium将元素解析为字符串

时间:2014-01-01 13:18:27

标签: ruby selenium

我的目标是动态获取由Javascript创建的网站内容。我有以下代码:

browser = Selenium::WebDriver.for :firefox
browser.get "https://gls-group.eu/AT/de/paket-verfolgen?match=00000000000"

wait = Selenium::WebDriver::Wait.new(:timeout => 20)
js_code = "return document.getElementsByTagName('div')"
elements = browser.execute_script(js_code)

puts elements

browser.close

输出结果为:

#<Selenium::WebDriver::Element:0x4e4c920>
#<Selenium::WebDriver::Element:0x4e4c770>
#<Selenium::WebDriver::Element:0x4e4c230>
#<Selenium::WebDriver::Element:0x4e55650>
#<Selenium::WebDriver::Element:0x4e55848>
#<Selenium::WebDriver::Element:0x4e57e58>
#<Selenium::WebDriver::Element:0x4e57c00>
#<Selenium::WebDriver::Element:0x4e57a08>

等等。我如何获得div s?

1 个答案:

答案 0 :(得分:2)

browser.execute_script(js_code)提供了您作为Selenium::WebDriver::Element类实例提出的所有html元素。使用方法Selenium::WebDriver::Element#text写下以获取这些div元素的内容:

require 'selenium-webdriver'

browser = Selenium::WebDriver.for :firefox
browser.get "https://gls-group.eu/AT/de/paket-verfolgen?match=00000000000"

wait = Selenium::WebDriver::Wait.new(:timeout => 20)
js_code = "return document.getElementsByTagName('div')"
elements = browser.execute_script(js_code)
elements.each{|e| puts e.text }