2013-03-22 71 views
1

我试图获得下拉列表中的所有选项。但它回来了 - []。在实际我的下拉列表中有250个选项(国家名单)无法获得下拉选项列表(对象)

以下是我的HTML页面的内容 -

<select id="country" selected="" name="country"> 
    <option value="U0">Unknown</option> 
    <option value="AP">Asia/Pacific Region</option> 
    <option value="EU">Europe</option 
    . 
    . 
    . 

要获得所有选项,我写了下面 -

element = driver.find_element(:id, "country") 
countries = element.find_elements(:tag_name, "option") 

但它返回空数组 - []实际上,它应该返回对象数组。

Selenium无法从下拉菜单返回大量选项吗?或者,在HTML页面或硒代码中是否有错误?

回答

0

您发布的内容,下列作品没有任何问题。 我建议你在html文件中添加选项,直到出现错误。

require "selenium-webdriver" 
require 'ap' 

driver = Selenium::WebDriver.for :firefox 
driver.get("file:///c:/ruby193/test/selenium/test.html") 
element = driver.find_element(:id, "country") 
countries = element.find_elements(:tag_name, "option") 
ap countries 

# [ 
#  [0] #<Selenium::WebDriver::Element:0x4033eddc id="{87044904-9da3-4194-9440-b585e9dabfc2}">, 
#  [1] #<Selenium::WebDriver::Element:0x..f2be9452 id="{6692657d-df40-4dd5-a8ad-a2dbadda18b5}">, 
#  [2] #<Selenium::WebDriver::Element:0x..fb1e0e416 id="{8886c68e-5c4f-45a5-8220-4795a73cabbe}"> 
# ] 

这里的test.html

<select id="country" selected="" name="country"> 
    <option value="U0">Unknown</option> 
    <option value="AP">Asia/Pacific Region</option> 
    <option value="EU">Europe</option> 
</select> 
+0

其实,我创建的测试页与250个国家选项下拉。当我在测试页面上运行代码时(正如我们上面所讨论的那样),它列出了所有的对象。但是,当我运行与我的网站相同的代码来自动化时,它会返回空数组 - []。我没有看到发生了什么问题。谢谢,彼得的帮助。 – TDHM 2013-03-22 11:00:37

+0

然后你可以发布你的网站的网址? – peter 2013-03-22 13:23:05

0

其实,这是我的错。我在irb &上运行了这些命令,它返回[]。但是当我编写存储在文件&中的脚本&运行该文件时,它列出了下拉选项的所有对象。

看起来irb限制阵列范围。

0

为什么不能使用默认选择类来获取下拉列表中的所有可用选项?

选择类别:link

获取选项方法:link