When selecting an option from a select list in a modal dialog, an exception
occurs regarding an undefined method 'focus' for Watir::ModalDialog.
>From the code, it looks like the problem will occur whenever the focus method
>is called for an element within a modal dialog. The focus method calls focus
>for its container. The ModalDialog does not have a focus method defined and
>therefore throws an exception when it is the container.
For example, given a page with a modal dialog:
````html
<html>
<body>
<h1>Modal Dialog Launcher</h1>
<input type="button" value="Launch Dialog"
onclick="window.showModalDialog('test.htm');"/>
</body>
</html>
````
and the page that is displayed in the modal dialog (test.htm):
````html
<html>
<body>
<select id="my_select">
<option>Honda</option>
<option>Toyota</option>
</select>
</body>
</html>
````
The following script will throw an exception when selecting an option from the
select list. Note that within the select method, the focus method for the modal
dialog gets called.
````ruby
require 'watir-classic'
browser = Watir::Browser.new
browser.goto('file:///C:/Users/jko/Desktop/modal_dialog.html')
browser.button.click_no_wait
browser.modal_dialog.select_list.select('Toyota')
#=>
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-4.0.1/lib/watir-classic/element.rb:207:in
`focus': undefined method `focus' for #<Watir::ModalDialog:0x2d5c700>
(NoMethodError)
#=> from
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-4.0.1/lib/watir-classic/element.rb:207:in
`focus'
#=> from
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-4.0.1/lib/watir-classic/element.rb:207:in
`focus'
#=> from
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-4.0.1/lib/watir-classic/element.rb:207:in
`focus'
#=> from
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-4.0.1/lib/watir-classic/input_elements.rb:166:in
`change_selected'
#=> from
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-4.0.1/lib/watir-classic/input_elements.rb:124:in
`block in select'
#=> from
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-4.0.1/lib/watir-classic/element.rb:477:in
`perform_action'
#=> from
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-4.0.1/lib/watir-classic/input_elements.rb:123:in
`select'
#=> from
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-4.0.1/lib/watir-classic/input_elements.rb:47:in
`each'
#=> from
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-4.0.1/lib/watir-classic/input_elements.rb:47:in
`block in select'
#=> from
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-4.0.1/lib/watir-classic/element.rb:477:in
`perform_action'
#=> from
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-4.0.1/lib/watir-classic/input_elements.rb:42:in
`select'
#=> from stuff.rb:21:in `<main>'
````
---
Reply to this email directly or view it on GitHub:
https://github.com/watir/watir-classic/issues/64_______________________________________________
Wtr-development mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/wtr-development