【问题标题】:Watir::Exception::MissingWayOfFindingObjectException: invalid attribute: :cssWatir::Exception::MissingWayOfFindingObjectException: 无效属性: :css
【发布时间】:2012-12-12 08:22:15
【问题描述】:

我很确定 watir-webdriver 支持 css 选择器,但看起来它不再存在了:

$ ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]

$ gem -v
1.8.15

$ gem list selenium-webdriver
*** LOCAL GEMS ***
selenium-webdriver (2.17.0)

$ gem list watir-webdriver
*** LOCAL GEMS ***
watir-webdriver (0.4.1)

$ irb
> require "watir-webdriver"
 => true 

> browser = Watir::Browser.new :firefox
 => #<Watir::Browser:0x787eb29124fb7658 url="about:blank" title=""> 

> browser.goto "google.com"
 => "http://www.google.com.mx/" 

> browser.a(:css => "a").flash
Watir::Exception::MissingWayOfFindingObjectException: invalid attribute: :css
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.4.1/lib/watir-webdriver/locators/element_locator.rb:228:in `assert_valid_as_attribute'
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.4.1/lib/watir-webdriver/locators/element_locator.rb:209:in `normalize_selector'
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.4.1/lib/watir-webdriver/locators/element_locator.rb:191:in `block in normalized_selector'
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.4.1/lib/watir-webdriver/locators/element_locator.rb:188:in `each'
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.4.1/lib/watir-webdriver/locators/element_locator.rb:188:in `normalized_selector'
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.4.1/lib/watir-webdriver/locators/element_locator.rb:76:in `find_first_by_multiple'
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.4.1/lib/watir-webdriver/locators/element_locator.rb:33:in `locate'
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.4.1/lib/watir-webdriver/elements/element.rb:285:in `locate'
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.4.1/lib/watir-webdriver/elements/element.rb:259:in `assert_exists'
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.4.1/lib/watir-webdriver/elements/element.rb:206:in `style'
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.4.1/lib/watir-webdriver/elements/element.rb:103:in `flash'
    from (irb):4
    from /Users/zeljko/.rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in `<main>'

环境:Mac OS X 10.7.2、Firefox 9.0.1。

我是不是做错了什么?

【问题讨论】:

    标签: css css-selectors watir watir-webdriver


    【解决方案1】:

    watir-webdriver 目前仅在您使用 Browser#element 时才支持此功能

     browser.element(:css => "a")
    

    我们可以添加对其他元素方法的支持,但我们必须找到一种方法来处理例如

     browser.a(:css => "div.foo")
    

    【讨论】:

    • 谢谢。有一瞬间我以为我疯了。我记得它正在工作。我想我当时用的是browser.element
    【解决方案2】:

    有趣的是,我仍然可以绕过很多限制或缺失的功能,这些限制或缺失的功能没有被 watir 直接 JS 调用所暴露,例如

    browser.execute_script('jQuery(\'div#td%s div a\').trigger(\'click\')' % reagent_id)
    

    正如我所说,在某些情况下,这对我来说是唯一的方法。更紧密地集成到 DOM 中真的很酷。

    【讨论】:

    • 我认为 watir 的主要困难在于 JavaScript 是一种异步语言。
    猜你喜欢
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 2018-04-10
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多