I think that the addition of the "click" to file_field.set in this
change (see thread below) is causing one of my tests to hang during
the @container.wait in the "click" method.  However, this problem
didn't show up until after the changes to the wait functionality in
mid-February.  Or so my theory goes . . .

The fix, in my case, is to change the "click" to a "click!" in
file_field.set, by-passing the @container.wait in the click method.  I
suppose I could use a time-out technique instead.

I can't provide a test case, unfortunately, because I don't have a
handle on all the javascript eventing and fancy ajax-y reload in
various frames that's going on in a generated SAP business server
pages app.  I think this is a relatively well-known issue with
ajax-like apps.  Please correct me if I'm wrong.

Attached is a patch to the 1.5.1163 revision that illustrates the way
I've modified watir.rb to allow me to specify wait behavior in the
file_field.set method.  The "watir 1.5.1163 - no_wait option in
file_field.set.patch" basically throws any extra arguments on
file_field.set into an args_hash Hash.  The "set" method then checks
for the :no_wait key and either "click"s or "click!"s based on that
key.

So,

file_field.set(path)  results in a "click"
file_field.set(path, :no_wait => false) results in a "click"
file_field.set(path, :no_wait => true) results in a "click!"

The upside here is that this doesn't change existing behavior.  The
downside is that it is kind of a hack as it stands.

I think that implementing this sort of functionality in a more general
(and perhaps better thought-out) way would give a lot of flexibility
to those of us dealing with ajax goodness to manually override wait
functionality when necessary.  It might also be a reasonably standard
way to allow granular control of other functionality on a method-call
by method-call basis.

Is this reasonable?  Has something like this been decided against in
the past?  Is it too big a change for 1.5?  Thoughts on problems?
Improvements?  Maybe using :wait => false instead of :no_wait => true
would be more intuitive?

I don't think this patch is ready to go into the code-base as it
stands, even if people think it is a reasonable approach, but I'll
submit a Jira ticket once I have something that I think will work.

Thanks,
Ethan

On 1/10/07, Bret Pettichord <[EMAIL PROTECTED]> wrote:
John Lolis wrote:
> I registered AutoItX3.dll using regsvr32 and it got rid of the error message, 
the problem now is it doesn't fill in the field with any text. I can flash it, so 
i know I have the right field - I just can't put anything in there.
>
> any more ideas?
>

Today I checked in fixes for both this and the other problem (autoit
registration). These are NOT in today's dev gem, but will be in the next
one. You can pull them from trunk if you like.

A workaround for this problem  for earlier versions of 1.5 is this:

1. Manually register autoit:

     >regsvr32 AutoItX3.dll

2. Add a call to click:

    ie.file_field(:id, 'DriverFileUpload_DriverFileUpload').set(filename)
    ie.file_field(:id, 'DriverFileUpload_DriverFileUpload').click

Please let us know if either of these solutions does not fix this
problem for anyone.

Bret
_______________________________________________
Wtr-general mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/wtr-general

Attachment: watir 1.5.1163 - no_wait option in file_field.set.patch
Description: Binary data

_______________________________________________
Wtr-general mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/wtr-general

Reply via email to