are you sure the jquery pop up is really a pop up and not just a div on the
page? Poke at it with firebug or ie developer toolbar, and Im sure you'll
find its just a div

Paul

On Fri, Apr 17, 2009 at 10:28 AM, Yahoo <tom.feodor...@conchango.com> wrote:

>
> I know, yet another issue with pop ups regarding watir. Let me start
> by saying I've been using watir for the past 4 years and love it. That
> is, until our developers got cute and started using Ajax jQuery
> javascript to confirm if a user really wanted to delete something.
>
> We have a regular javascript pop up in our application which I was
> successfully able to handle thanks to the many posts in this forum,
> but for the life of me I can't get this Ajax pop up to work.
>
> To start, what I have working:
>
> The call I am using to produce the regular javascript pop up is:
> $ie.link(:text , "Go").click!
> I then call the following method:
> def startClicker( browser, button , waitTime= 10)
>  # get a handle if one exists
>  puts "in Start Clicker"
>  Timeout::timeout(2) do
>    hwnd = browser.enabled_popup(waitTime)
>    if (hwnd)  # yes there is a popup
>      puts "there is a pop up"
>      w = WinClicker.new
>      # "OK" or whatever the name on the button is
>      w.clickWindowsButton_hwnd( hwnd, "#{button}" )
>      #
>      # this is just cleanup
>      w=nil
>    else
>      puts "there is no pop up"
>    end
>  end
> end
>
> Which is successful. Yay, a success story :) Now the fun.
>
> The following is what I call to produce the Ajax Confirm Deletion pop
> up:
> $ie.link(:title, "Delete watir").click!
>
> I have tried startClicker($ie, "OK") and get the following error:
> Timeout::Error: execution expired
>    c:/ruby/lib/ruby/1.8/timeout.rb:54:in `sleep'
>
> I have also tried autoit with the following:
> def autoitStartClicker()
>  puts "in autoitStartClicker"
>  autoit = WIN32OLE.new('AutoItX3.Control')
>  autoit.WinWait('Confirm Deletion', '', 5)
>  autoit.ControlClick("Confirm Deletion", "", "[CLASS:Button;
> TEXT:OK]")
>  autoit.Send('{OK}')
> end
>
> and got no errors and no results either. When doing these steps in
> IRB, I get:
> irb(main):011:0> ie.link(:title, "Delete watir").click!
> => ""
> irb(main):012:0> autoit = WIN32OLE.new('AutoItX3.Control')
> => #<WIN32OLE:0x45d05f8>
> irb(main):013:0> autoit.WinWait('Confirm Deletion', '', 5)
> => 0
> irb(main):014:0> autoit.ControlClick("Confirm Deletion", "",
> "[CLASS:Button; TEXT:OK]")
> => 0
> irb(main):015:0>
> so it is able to create the win32ole autoit object, but it can't seem
> to find my Confirm Deletion pop up, hence =>0. Which is even more
> evident from:
> irb(main):015:0> autoit.WinActivate('Confirm Deletion')
> => nil
>
> I also tried to attach to the pop up as if it were another window:
> irb(main):016:0> pop_up = Watir::IE.attach(:title, 'Confirm Deletion')
> Watir::Exception::NoMatchingWindowFoundException: Unable to locate a
> window with
>  title of Confirm Deletion
>
> Then I tried the following (which mentions it is suppose to start some
> Ajax stuff):
> irb(main):018:0* ie.link(:url, %r|ConfirmDeletion|).click
> Watir::Exception::UnknownObjectException: Unable to locate element,
> using :url,
> /ConfirmDeletion/
>
>
> The javascript code used to delete the entity is:
>
> $(document).ready(function() {
>
>        $('.ajaxDeleteButton')
>        .click(function(i){
>                deleteButton($(this))
>                return false;
>        })
> });
>
>
> function deleteButton(button) {
>        jConfirm('Do you really want to delete?', 'Confirm Deletion',
> function
> (r) {
>            if (r == true) {
>                button.find("img").hide().attr("src", "images/
> processing.gif").fadeIn("slow", function() {
>                        doDelete(button);
>                });
>            }
>        });
> }
>
> function doDelete(button) {
>        jQuery.ajax({
>                type: "POST",
>                url: button.attr("href"),
>                success: function(msg) {
>                        var row = button.parent().parent();
>                        if (msg == 1) {
>                                row.remove();
>                                $(".stripey tr").removeClass("odd");
>                                $(".stripey tr:odd").addClass("odd");
>
>                                if(button.hasClass("reloadAfterDelete")) {
>                                        window.location.reload(true);
>                                }
>                        } else {
>
>  row.find("td:first").addClass("errorTxt").prepend("This item is in
> use and cannot be deleted.<br />");
>                                button.remove();
>                        }
>                }
>        });
> }
>
> I have discussed this issue with my developers and we are all hoping
> we can find a way for watir to handle this so they don't have to
> modify their code. We are just now at the stage where we are getting
> our watir scripts to run with cruise control for nightly tests, but
> without being able to click OK on this Confirm Deletion pop up, some
> assert tests are failing.
>
> I hope I've offered enough information here to get some discussion,
> but if you have any questions on specifics, please ask.
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Watir General" group.
To post to this group, send email to watir-general@googlegroups.com
Before posting, please read the following guidelines: 
http://wiki.openqa.org/display/WTR/Support
To unsubscribe from this group, send email to 
watir-general-unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/watir-general
-~----------~----~----~----~------~----~------~--~---

Reply via email to