Ruby Watir 获取页面的特定 html 元素
Ruby Watir to get specific html element of a page
这个我已经试过了:
puts browser.text
并且有效。我想问一下是否可以只显示或打印特定元素或 html 标签。
例如这个:
<button class="btn btn-add" data-role="add">Add New User</button>
有没有办法只获取这个元素?不是整个页面源。
我也试试
puts @browser.button(:class => "btn btn-add").html
错误是:
1) Error:
test_login(TC_Login):
Selenium::WebDriver::Error::JavascriptError: invalid 'in' operand a
[remote server] http://sample.org/user/ line 68 > Function:18:in `G'
[remote server] http://sample.org/user/ line 68 > Function:18:in `anonymous/</<'
[remote server] http://sample.org/user/ line 68 > Function:15:in `anonymous/<'
[remote server] http://sample.org/user/ line 68 > Function:15:in `anonymous'
[remote server] http://sample.org/user/:68:in `handleEvaluateEvent'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/http/common.rb:59:in `new'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/http/common.rb:59:in `create_response'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/http/default.rb:66:in `request'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/bridge.rb:640:in `raw_execute'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/bridge.rb:618:in `execute'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/bridge.rb:339:in `executeScript'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/common/driver.rb:193:in `execute_script'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.11/lib/watir-webdriver/atoms.rb:20:in `execute_atom'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.11/lib/watir-webdriver/elements/element.rb:290:in `outer_html'
excel.rb:277:in `test_login'
browser.button(:class => "btn btn-add")
@browser.button(:class => "btn btn-add").html
那应该显示元素的HTML。
我不知道为什么 Andrew Leaf 的回答对你不起作用,它应该是简单而正确的方法,你能 post 它抛出的错误吗?
但你也可以试试这个:
browser.execute_script('return document.getElementsByClassName("btn-add")[0];').html
可以使用方法 inner_html
显示页面上元素的基础 HTML 代码
放 browser.button(:class => "btn btn-add").inner_html
这个我已经试过了:
puts browser.text
并且有效。我想问一下是否可以只显示或打印特定元素或 html 标签。 例如这个:
<button class="btn btn-add" data-role="add">Add New User</button>
有没有办法只获取这个元素?不是整个页面源。 我也试试
puts @browser.button(:class => "btn btn-add").html
错误是:
1) Error:
test_login(TC_Login):
Selenium::WebDriver::Error::JavascriptError: invalid 'in' operand a
[remote server] http://sample.org/user/ line 68 > Function:18:in `G'
[remote server] http://sample.org/user/ line 68 > Function:18:in `anonymous/</<'
[remote server] http://sample.org/user/ line 68 > Function:15:in `anonymous/<'
[remote server] http://sample.org/user/ line 68 > Function:15:in `anonymous'
[remote server] http://sample.org/user/:68:in `handleEvaluateEvent'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/http/common.rb:59:in `new'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/http/common.rb:59:in `create_response'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/http/default.rb:66:in `request'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/bridge.rb:640:in `raw_execute'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/bridge.rb:618:in `execute'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/remote/bridge.rb:339:in `executeScript'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/webdriver/common/driver.rb:193:in `execute_script'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.11/lib/watir-webdriver/atoms.rb:20:in `execute_atom'
c:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.11/lib/watir-webdriver/elements/element.rb:290:in `outer_html'
excel.rb:277:in `test_login'
browser.button(:class => "btn btn-add")
@browser.button(:class => "btn btn-add").html
那应该显示元素的HTML。
我不知道为什么 Andrew Leaf 的回答对你不起作用,它应该是简单而正确的方法,你能 post 它抛出的错误吗? 但你也可以试试这个:
browser.execute_script('return document.getElementsByClassName("btn-add")[0];').html
可以使用方法 inner_html
显示页面上元素的基础 HTML 代码放 browser.button(:class => "btn btn-add").inner_html