【问题标题】:Selenium parse elements to stringSelenium 将元素解析为字符串
【发布时间】:2014-01-01 13:18:27
【问题描述】:

我的目标是动态获取由 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>

等等。如何获得divs?

【问题讨论】:

  • 试试 puts elements.to_sputs elements.html 我不记得正确的变体。

标签: ruby selenium


【解决方案1】:

browser.execute_script(js_code) 提供您所要求的所有 html 元素作为 Selenium::WebDriver::Element 类的实例。编写如下使用方法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 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多