2015-02-18 2 views
0

я следующие строки кода:Ошибка при отображении HTML-элемента в Watir

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 

элемент уже существует. И когда я пробую puts @browser.html, он отображает весь источник страницы. Моя цель - отобразить только определенный элемент HTML. И я попробовал строки кода выше. И я не понимаю, что говорит ошибка.

+0

Что вы пытаетесь сделать? 'помещает 'текст в' text_field'? Трудно сказать, что вы просите. – orde

+0

Я прошу указать источник страницы элемента – eunice

+2

Используете ли вы FF35? Похоже на это. Если это так, у него есть [вопросы] (https://code.google.com/p/selenium/issues/detail?id=8390), поэтому вы можете перейти на FF34. '@ browser.text_field (: id =>" foo "). html' должен возвращать HTML для определенного элемента и' @ browser.text_field (: id => "foo"). value' должен возвращать текст в пределах текстовое поле. YMMV. – orde

ответ

0

Попробуйте это, так как это будет соответствовать конкретному элементу.

@browser.find_element(:id, "street") 
+0

Метод find_element не определен для Watir. И альтернативный метод для этого - @ browser.element (: id, «street»). Но ошибка, которую я получил, по-прежнему остается прежней. – eunice

0

Попробуйте

puts @browser.text_field(:id => "street").value if @browser.text_field(:id => "street").exists? 
Смежные вопросы