Ruby 在Watir中显示HTML元素时出错

Ruby 在Watir中显示HTML元素时出错,ruby,watir,watir-webdriver,Ruby,Watir,Watir Webdriver,我有以下几行代码: if @browser.text_field(:id => "street").exists? puts "street exist" puts @browser.text_field(:id => "street").html else puts "street does not exist" end 但是在运行这个之后,我有一个错误: Run options: # Running tests: str

我有以下几行代码:

if @browser.text_field(:id => "street").exists?
      puts "street exist"
      puts @browser.text_field(:id => "street").html
    else
      puts "street does not exist"
    end
但是在运行这个之后,我有一个错误:

Run options: 

# Running tests:

street exist
E

Finished tests in 90.183158s, 0.0111 tests/s, 0.0000 assertions/s.

  1) Error:
test_login(TC_Login):
Selenium::WebDriver::Error::JavascriptError: invalid 'in' operand a
    [remote server] http://sam.org/user/ line 68 > Function:18:in `G'
    [remote server] http://sam.org/user/ line 68 > Function:18:in `anonymous/</<'
    [remote server] http://sam.org/user/ line 68 > Function:15:in `anonymous/<'
    [remote server] http://sam.org/user/ line 68 > Function:15:in `anonymous'
    [remote server] http://sam.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:279:in `test_login'

1 tests, 0 assertions, 0 failures, 1 errors, 0 skips
运行选项:
#运行测试:
街道存在
E
完成了90.183158s、0.0111次测试/秒、0.0000次断言/秒的测试。
1) 错误:
测试登录(TC登录):
Selenium::WebDriver::Error::JavascriptError:操作数a中的“in”无效
[远程服务器]http://sam.org/user/ 第68行>函数:18:in'G'
[远程服务器]http://sam.org/user/ 第68行>函数:18:in'anonymous/函数:15:in'anonymous'
[远程服务器]http://sam.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:279:in'test_login'
1个测试,0个断言,0个失败,1个错误,0个跳过

元素已存在。当我尝试放置@browser.html时,它会显示整个页面的源代码。我的目标是只显示一个特定的HTML元素。我试过上面的代码行。我不明白错误是怎么说的。

试试这个,因为这是特定于元素的

@browser.find_element(:id, "street")
试一试


查找元素方法对于Watir是未定义的。另一种方法是@browser.element(:id,“street”)。但是我犯的错误还是一样的。你想做什么
将文本放入
文本\u字段
?很难说你在问什么。我在问元素的具体页面来源。你在使用FF35吗?听起来像。如果是这样的话,它已经有了,所以你可能想降级到FF34
@browser.text_字段(:id=>“foo”).html
应返回特定元素的html,而
@browser.text_字段(:id=>“foo”).value
应返回文本字段中的文本。目前Firefox 35的YMMV.execute_脚本已被破坏,只要WebDriver 2.45发布,修复程序就会准备就绪。实际上,您需要@browser.text_field(:id=>“foo”).text来返回文本字段中的文本。如果标记中有value属性,value将返回该属性。FF35?那是火狐35版吗?对我正在用那个。但是我怎样才能把它降到FF34呢?
puts @browser.text_field(:id => "street").value if @browser.text_field(:id => "street").exists?