Ruby 如何从隐藏的选择列表中选择值?

Ruby 如何从隐藏的选择列表中选择值?,ruby,selenium,phantomjs,html-select,watir,Ruby,Selenium,Phantomjs,Html Select,Watir,我想从中选择隐藏的选择列表,然后选择选项0-0,5 我一直收到一个(Selenium::WebDriver::Error::ElementNotVisibleError) 完整的错误日志: /Users/#/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/remote/response.rb:51:in `assert_ok': {"errorMessa

我想从中选择隐藏的选择列表,然后选择选项
0-0,5

我一直收到一个
(Selenium::WebDriver::Error::ElementNotVisibleError)

完整的错误日志:

/Users/#/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/remote/response.rb:51:in `assert_ok': {"errorMessage":"Element is not currently visible and may not be manipulated","request":{"headers":{"Accept":"application/json","Accept-Encoding":"gzip;q=1.0,deflate;q=0.6,identity;q=0.3","Connection":"close","Content-Length":"2","Content-Type":"application/x-www-form-urlencoded","Host":"127.0.0.1:8910","User-Agent":"Ruby"},"httpVersion":"1.1","method":"POST","post":"{}","postRaw":"{}","url":"/click","urlParsed":{"anchor":"","query":"","file":"click","directory":"/","path":"/click","relative":"/click","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/click","queryKey":{},"chunks":["click"]},"urlOriginal":"/session/115feff0-0b40-11e4-a69f-e39c52da2b2d/element/%3Awdc%3A1405333055513/click"}} (ReqHand) (Selenium::WebDriver::Error::ElementNotVisibleError)
        from /Users/#/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
        from /Users/#/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/remote/http/common.rb:59:in `new'
        from /Users/#/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/remote/http/common.rb:59:in `create_response'
        from /Users/#/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/remote/http/default.rb:66:in `request'
        from /Users/#/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
        from /Users/#/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/remote/bridge.rb:634:in `raw_execute'
        from /Users/#/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/remote/bridge.rb:612:in `execute'
        from /Users/#/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/remote/bridge.rb:369:in `clickElement'
        from /Users/#/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/common/element.rb:54:in `click'
        from /Users/#/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/watir-webdriver-0.6.10/lib/watir-webdriver/elements/select.rb:155:in `select_by_string'
        from /Users/#/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/watir-webdriver-0.6.10/lib/watir-webdriver/elements/select.rb:131:in `select_by'
        from /Users/#/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/watir-webdriver-0.6.10/lib/watir-webdriver/elements/select.rb:64:in `select'
        from aegon.rb:15:in `<main>'

问题是如何从隐藏的选择列表中选择选项
0-0,5
?我是否应该使用其他东西而不是Watir?

Selenium只允许用户实现交互,因此不允许与隐藏列表交互

如果列表出现在某个操作上(例如鼠标悬停),则需要先执行该操作。如果列表是通过另一个对象(例如select2)显示的,则必须通过该元素进行交互

然而,如果您真的想在不遵循这一点的情况下实现这一点,那么您可以通过selenium执行JavaScript来启用或设置它


这种方法的优点是有争议的,尽管在选择列表后面有一个链接,该链接中有选择列表的向下箭头。单击箭头后,将显示uls和lis。有一个李与你正在寻找的价值。其中有一个链接。点击它

b.select_lists[2].select "0 - 0,5"
b.select_list(:name, 'werkervaring').parent.link.click
b.li(text: '0 - 0,5').link.click

注意,为了确保我们使用的是正确的列表,我仍然使用werkervaring作为唯一的定位器,然后在同一个父项下找到了兄弟链接

简短回答:如果用户不能,Selenium不能。用户可以。隐藏的选择列表以某种方式连接到可见的和样式化的列表。看看html。如果我通过可见元素选择
0-0,5
,则隐藏元素也会发生变化并完成所有工作。如果存在可见和样式化元素,为什么不与该元素交互?通过索引定位选择列表不会改变Watir是否可以与之交互。无论您如何找到它,选择列表仍将不可见。因此,Watir/Selenium将不允许您与它进行交互。说您想要的,这对我很有效。我能够操纵表格中的所有内容。
b.select_lists[2].select "0 - 0,5"
b.select_list(:name, 'werkervaring').parent.link.click
b.li(text: '0 - 0,5').link.click