/ / Watir :: Exception :: MissingWayOfFindingObjectException: atributo inválido:: css - css, seletores css, watir, watir-webdriver

Watir :: Exception :: MissingWayOfFindingObjectException: atributo inválido:: css - css, seletores css, watir, watir-webdriver

Tenho certeza que o watir-webdriver tinha suporte a seletor css, mas parece que não está mais lá:

$ 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>"

Ambiente: Mac OS X 10.7.2, Firefox 9.0.1.

Estou fazendo algo errado?

Respostas:

6 para resposta № 1

Atualmente, o watir-webdriver suporta apenas isso se você usar o elemento # do navegador

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

Poderíamos adicionar suporte a outros métodos de elementos, mas teríamos que encontrar uma maneira de lidar, por exemplo,

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

3 para resposta № 2

Engraçado, o suficiente eu ainda posso ignorar muitas limitações ou falta de funcionalidade não exposta pelo watir fazendo chamadas JS diretas, por exemplo.

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

Como eu disse, em alguns casos esse é o único caminho para mim. Seria muito legal ter uma integração mais forte no DOM.