2011-09-20 45 views
1

空白,我想使用的Watir-webdriver的一个select_list中返回文本选定值。下面就正常工作(例如,使用的Watir示例页面http://bit.ly/watir-exampleselected_options收益从IFRAME

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> 

有我错过了什么或有另一种方式来实现这一目标?

+0

此问题存在于IE中。 FF似乎工作得很好。我目前无法检查Chrome。 – OutKa5t

回答

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

+0

谢谢阿利斯特。不幸的是,在我测试的代码中,这个值并不代表文本元素,所以它对我不起作用。 “<选项值=‘2’>维修估计” 我将保持在错误进度表。 – OutKa5t

+1

增加了解决方法 –