select_list.options returns an object of type OptionCollection  not an array

It supports most of the methods you'd expect for an array in terms of 
simple navigation (.each, .first, [], .length, etc) so you can pretty much 
treat it as an array, but you can't (I'm pretty sure) assign it to an array 
without first converting it into an array.   

See here for more info on that object type.  
http://rubydoc.info/github/watir/watir-webdriver/Watir/OptionCollection

Most of the methods such as [] or .each would return an option object, the 
methods for which you can see here  
http://rubydoc.info/github/watir/watir-webdriver/Watir/Option

I'm pretty sure you'd want to call the .to_a method on the objectcollection 
to get an array. I'm not sure exactly what will be in the resulting array 
when it turns the collection into an array, it might be a set of hashes or 
something given that each option object has at least two properties if not 
three (value, text, selected?)

Or just trying assigning it to a variable, and see if that works

to see the details on each option in the list, try something along these 
lines

    b.select_list(:name => 'entry.6.single').options.each do |option|
      puts "the option is listed as: #{option.text} and selected? returns: 
#{option.selected?}"
    end




On Tuesday, April 24, 2012 12:30:04 PM UTC-7, krizzo wrote:
>
> I created this test script because I was having issues with another script 
> that needed to work with select_list. This is having the same issue. From 
> my understanding "contents[0]" should print out "Firefox" but instead I get 
> a memory location. I printed the "memory" location out and it's not a 
> simple array of the options it almost looks like the browser object.
>
> I wanted to know if this was a known issue or is my understanding 
> incorrect on options returning an array?
>
> ## Output 
> #<Watir::Option:0x816f138>
> [
>     [0] "test",
>     [1] "one",
>     [2] "two",
>     [3] "three"
> ]
>
> ## Test Script
>
> require 'rubygems'
> require 'ap'
> require 'watir-webdriver'
> url = "
> https://spreadsheets.google.com/viewform?hl=en&formkey=dDliTk5XU1R4RUMtb2c1WDZxWHNENmc6MQ#gid=0
> "
> myArray = %w[test one two three] 
> b = Watir::Browser.new :firefox, :profile => 'LoL'
> b.goto url
> contents = Array.new
> contents = b.select_list(:name => 'entry.6.single').options
> puts contents[0]
> ap myArray
> b.close
>
>
On Tuesday, April 24, 2012 12:30:04 PM UTC-7, krizzo wrote:
>
> I created this test script because I was having issues with another script 
> that needed to work with select_list. This is having the same issue. From 
> my understanding "contents[0]" should print out "Firefox" but instead I get 
> a memory location. I printed the "memory" location out and it's not a 
> simple array of the options it almost looks like the browser object.
>
> I wanted to know if this was a known issue or is my understanding 
> incorrect on options returning an array?
>
> ## Output 
> #<Watir::Option:0x816f138>
> [
>     [0] "test",
>     [1] "one",
>     [2] "two",
>     [3] "three"
> ]
>
> ## Test Script
>
> require 'rubygems'
> require 'ap'
> require 'watir-webdriver'
> url = "
> https://spreadsheets.google.com/viewform?hl=en&formkey=dDliTk5XU1R4RUMtb2c1WDZxWHNENmc6MQ#gid=0
> "
> myArray = %w[test one two three] 
> b = Watir::Browser.new :firefox, :profile => 'LoL'
> b.goto url
> contents = Array.new
> contents = b.select_list(:name => 'entry.6.single').options
> puts contents[0]
> ap myArray
> b.close
>
>

-- 
Before posting, please read http://watir.com/support. In short: search before 
you ask, be nice.

[email protected]
http://groups.google.com/group/watir-general
[email protected]

Reply via email to