selected_options从iframe返回空白

时间:2011-09-20 13:56:50

标签: iframe watir watir-webdriver

我正在尝试使用watir-webdriver从select_list返回所选值的文本。以下通常可以正常工作(例如使用Watir示例页面http://bit.ly/watir-example

browser = Watir::Browser.new :ie
browser.goto "http://bit.ly/watir-example"
browser.select_list(:id => "entry_6").option(:index, 2).select
puts browser.select_list(:id => "entry_6").select_list(:id => "entry_6").selected_options

=>Internet Explorer

但是,如果你在框架上粘贴相同的代码,我什么也得不回来。

browser = Watir::Browser.new :ie
browser.goto "test_iframe.html"
browser.frame(:id => "test").select_list(:id => "entry_6").option(:index, 2).select
puts browser.frame(:id => "test").select_list(:id => "entry_6").select_list(:id => "entry_6").selected_options

=>Nothing returned

iframe示例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>

<body>
<p>TEST IFRAME ISSUES</p>

<iframe src="http://bit.ly/watir-example" id="test" width="100%" height="1400px">

</iframe>

</body>
</html>

我是否遗漏了某些内容或是否有其他方法可以实现这一目标?

1 个答案:

答案 0 :(得分:1)

当select_list在Windows上的iFrame中时,看起来像selected_options中的错误。请尝试使用.value。

b = Watir::Browser.start 'http://dl.dropbox.com/u/18859962/iframe.html', :ie
b.frame.exist? #=> true
b.frame.text_fields.count #=> 2
b.frame(:id => "test").select_list(:id => "entry_6").option(:index, 2).select
puts b.frame(:id => "test").select_list(:id => "entry_6").selected_options #=> nil
puts b.frame(:id => "test").select_list(:id => "entry_6").value
 # Internet Explorer
b.goto "bit.ly/watir-example"
b.select_list(:id => "entry_6").option(:index, 2).select
puts b.select_list(:id => "entry_6").selected_options #Internet Explorer
puts b.select_list(:id => "entry_6").value #Internet Explorer

我将此作为Watir-WebDriver错误提出:https://github.com/jarib/watir-webdriver/issues/102

<强>更新

在此期间,您可以遍历选项,找到所选的一个,然后吐出html文本:

require 'nokogiri'
b.frame(:id => "test").select_list(:id => "entry_6").options.each do |option|
  puts Nokogiri::HTML(option.html).text if option.selected?
end

<强>更新

这已在watir-webdriver 0.3.3

中得到解决