当我传入css选择器时,为什么会出现无效的属性错误?

时间:2014-01-31 17:16:08

标签: ruby watir watir-webdriver

计算器,

这是我正在尝试做的事情

def get_element_from_list(root, item, index)
  @browser.elements(:css => root).each do |element|
    if element.present?
      return element.element(:css => item, :index => index)
    end
  end

  raise Selenium::WebDriver::Error::NoSuchElementError
end

get_element_from_list('div[class*=x-combo-list]', 'x-combo-list-item', index).click

给了我Watir :: Exception :: MissingWayOfFindingObjectException:无效属性:: css

我不明白的是,如果我只是做

@browser.elements(:css => 'div[class*=x-combo-list]').each do |element|
  if element.present?
    return element.element(:css => 'x-combo-list-item', :index => index)
  end
end

基本上用它无效的实际字符串替换root和item。

1 个答案:

答案 0 :(得分:1)

我认为可能存在一个错误,阻止使用:css和:index locator定位元素 - Issue 241

您可以通过获取元素集合然后在特定索引处获取元素来解决此问题:

return element.elements(:css => 'x-combo-list-item')[index]

(请注意,我认为这个css选择器可能是错误的。它可能是.x-combo-list-item。)

或者,假设x-combo-list-item实际上是元素的类,您可以这样做:

return element.element(:class => 'x-combo-list-item', :index => index)