The poc code for Watir::Executor has been sitting in the PRs for a year:
https://github.com/watir/watir/pull/587

I was going to wait until Watir 7 to release it, but I don't think there is
anything backward-compatibility breaking in it, so I don't think I should
technically need to wait for that.




On Tue, Aug 7, 2018 at 10:58 AM rajagopalan madasami <
[email protected]> wrote:

> I have created a framework where I specifically asked them to use click
> and clickAndWait separately , click will simply performs the WATIR click,
> clickAndWait will perform the WATIR click and call the function waitForLoad
> as you have seen. So if such a hook is available that would be easy for me.
>
> On Tue 7 Aug, 2018, 11:24 PM Titus Fortner, <[email protected]>
> wrote:
>
>> It's more than that when running remotely, though. Definitely use it if
>> it makes sense regardless of local or remote, but if you've solved your
>> issue by just wrapping the select method, that's targeted and "better." :)
>>
>>
>>
>> On Tuesday, August 7, 2018 at 10:41:36 AM UTC-7, Justin Ko wrote:
>>>
>>> I agree that adding it to the after hooks adds overhead. Though at
>>> 0.015s per click, it's not the worst thing in the world.
>>>
>>> I worked on one application where almost every button/link click
>>> triggered a loading overlay. Creating a method for each button/link to add
>>> the wait would defeat the purpose of using the Page Object gem. As with
>>> anything, the "better way" really depends on the application you're testing.
>>>
>>> Justin
>>>
>>>
>>> On Tuesday, August 7, 2018 at 1:00:37 PM UTC-4, [email protected]
>>> wrote:
>>>>
>>>> Okay, I will be waiting for that then! There was a new project in my
>>>> company for which I convinced them to use WATIR instead of Selenium where I
>>>> had to implement this waiting behavior! Okay excited to see this new
>>>> feature to be added!   Thanks.
>>>>
>>>> On Tuesday, August 7, 2018 at 10:24:55 PM UTC+5:30, Titus Fortner wrote:
>>>>>
>>>>> you'll be able to specify the exact desired behaviours in a more
>>>>> granular way
>>>>>
>>>>> On Tue, Aug 7, 2018, 9:53 AM <[email protected]> wrote:
>>>>>
>>>>>> Oh okay. But you said
>>>>>>
>>>>>> The Executor class when implemented will open up a lot more
>>>>>>> flexibility.
>>>>>>
>>>>>>
>>>>>> So will it be lesser wire call after Executor class implemented? Can
>>>>>> I add after that?
>>>>>>
>>>>>> On Tuesday, August 7, 2018 at 10:18:51 PM UTC+5:30, Titus Fortner
>>>>>> wrote:
>>>>>>>
>>>>>>> No, your way is better if it is working for you. Adding it to the
>>>>>>> after hook will add a ton more unnecessary calls to your code.
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Aug 7, 2018 at 9:38 AM <[email protected]> wrote:
>>>>>>>
>>>>>>>> That will be interesting, I am using as shown below,
>>>>>>>>
>>>>>>>>>
>>>>>>>>> def selectAndWait(locator, value)
>>>>>>>>>   select locator, value
>>>>>>>>>   waitForPageLoad
>>>>>>>>> end
>>>>>>>>>
>>>>>>>>> def waitForPageLoad
>>>>>>>>>   @b.wait_until(timeout: @Page_Load) {@b.execute_script("return 
>>>>>>>>> (jQuery.active === 0)").eql? true}
>>>>>>>>> end
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> Let me try using this `after_hook`, a very interesting idea indeed.
>>>>>>>> On Tuesday, August 7, 2018 at 9:59:47 PM UTC+5:30, Titus Fortner
>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> after any action that changes or is likely to change the dom, so
>>>>>>>>> it can get heavy if overused. The Executor class when implemented 
>>>>>>>>> will open
>>>>>>>>> up a lot more flexibility.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Aug 7, 2018, 9:27 AM <[email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Ah! that's pretty interesting, I was not knowing this. So you say
>>>>>>>>>> Once I have written this code, this code will be executed after 
>>>>>>>>>> every click
>>>>>>>>>> I do?
>>>>>>>>>>
>>>>>>>>>> On Tuesday, August 7, 2018 at 9:54:17 PM UTC+5:30, Titus Fortner
>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> jquery_wait = lambda { |br| br.wait_until { |b|
>>>>>>>>>>> b.execute_script('return jQuery.active == 0') } }
>>>>>>>>>>> browser.after_hooks.add(jquery_wait)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Tuesday, August 7, 2018 at 9:17:32 AM UTC-7,
>>>>>>>>>>> [email protected] wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> Hi Justin,
>>>>>>>>>>>>
>>>>>>>>>>>> We are also using this wait_for_ajax in one of our Project. You
>>>>>>>>>>>> said
>>>>>>>>>>>>
>>>>>>>>>>>> I would suggest adding the jQuery.active check to your
>>>>>>>>>>>>> browser's after_hooks. Ideally this would catch all (or at least 
>>>>>>>>>>>>> most) of
>>>>>>>>>>>>> the problems.
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> May I know how to do this?
>>>>>>>>>>>>
>>>>>>>>>>>> On Tuesday, August 7, 2018 at 9:37:42 PM UTC+5:30, Justin Ko
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> The #wait_for_ajax simplifies things if you need to manually
>>>>>>>>>>>>> call it. However, it sounds like you would have to sprinkle this 
>>>>>>>>>>>>> everywhere.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Note that there would be a small performance hit of making
>>>>>>>>>>>>> this check after each click/goto. However, if it's an AJAX heavy
>>>>>>>>>>>>> application, it's probably worth it.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Justin
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Tuesday, August 7, 2018 at 11:36:54 AM UTC-4, Titus Fortner
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Found it
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> See the section on Waiting for AJAX Calls here:
>>>>>>>>>>>>>> http://cheezyworld.com/2012/02/23/page-object-0-6-2-released/
>>>>>>>>>>>>>> let's you call `wait_for_ajax` where you want it.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, Aug 7, 2018 at 7:43 AM NaviHan <[email protected]>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> > Yes Justin, That was exactly what happened. I ran the
>>>>>>>>>>>>>> script a few times and using "Watir::Wait.until(timeout: 30)
>>>>>>>>>>>>>> {@browser.execute_script('return jQuery.active == 0')}" never 
>>>>>>>>>>>>>> gave me the
>>>>>>>>>>>>>> error "
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> > Element <span class="swatchanchor-value">...</span> is not
>>>>>>>>>>>>>> clickable at point (537, 362). Other element would receive the 
>>>>>>>>>>>>>> click: <div
>>>>>>>>>>>>>> class="loader-bg"></div>"
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> > The code is
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> > def select_online_size (size)
>>>>>>>>>>>>>> >   Watir::Wait.until(timeout: 30)
>>>>>>>>>>>>>> {@browser.execute_script('return jQuery.active == 0')}
>>>>>>>>>>>>>> >   sizes_online_elements.find {|el|
>>>>>>>>>>>>>> el.when_present.text.eql? size}.click
>>>>>>>>>>>>>> > end
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> > I was expecting that the "when_present" method would not
>>>>>>>>>>>>>> give any timing issue because this waits until the element is 
>>>>>>>>>>>>>> present.
>>>>>>>>>>>>>> Somehow this evaulates to true at the same time the spinner 
>>>>>>>>>>>>>> which is
>>>>>>>>>>>>>> loading while the Ajax is running receives the click.
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> > Is there a PO way to resolve this , I mean without having
>>>>>>>>>>>>>> to use the "jQuery" statement
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> > Cheers
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> > Navi
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> > On Friday, 3 August 2018 15:12:45 UTC+10, NaviHan wrote:
>>>>>>>>>>>>>> >>
>>>>>>>>>>>>>> >> I have a functionality where I click an a link from an
>>>>>>>>>>>>>> email a voucher gets added to the shopping cart and a pop up 
>>>>>>>>>>>>>> appears with a
>>>>>>>>>>>>>> message. Im trying to assert the text in the popup
>>>>>>>>>>>>>> >> I have defined the element as
>>>>>>>>>>>>>> >>
>>>>>>>>>>>>>> >> div(:cta_description, :css =>
>>>>>>>>>>>>>> '.homepage-clicktoactiavte-description')
>>>>>>>>>>>>>> >>
>>>>>>>>>>>>>> >> Tried to use a mix of Watir and Pageobejct to read the
>>>>>>>>>>>>>> text. The below code works 5 out of 10 times.
>>>>>>>>>>>>>> >>
>>>>>>>>>>>>>> >> @rewards_popup_txt =
>>>>>>>>>>>>>> Watir::Wait.until{cta_description_element}.text
>>>>>>>>>>>>>> >> @rewards_popup_txt =
>>>>>>>>>>>>>> @rewards_popup_txt.gsub(/[^$,.A-Za-z0-9]/," ")
>>>>>>>>>>>>>> >> return @rewards_popup_txt
>>>>>>>>>>>>>> >>
>>>>>>>>>>>>>> >>
>>>>>>>>>>>>>> >> Tried using, which doesnt even set the @reward_popup_txt
>>>>>>>>>>>>>> and shows error
>>>>>>>>>>>>>> >>
>>>>>>>>>>>>>> >>
>>>>>>>>>>>>>> >> if (Watir::Wait.while {cta_description_element.visible?})
>>>>>>>>>>>>>> >>   @rewards_popup_txt = cta_description_element.text
>>>>>>>>>>>>>> >> end
>>>>>>>>>>>>>> >> @rewards_popup_txt =
>>>>>>>>>>>>>> @rewards_popup_txt.gsub(/[^$,.A-Za-z0-9]/," ")
>>>>>>>>>>>>>> >> return @rewards_popup_txt
>>>>>>>>>>>>>> >>
>>>>>>>>>>>>>> >> Error
>>>>>>>>>>>>>> >> NoMethodError: undefined method `gsub' for nil:NilClass
>>>>>>>>>>>>>> >>
>>>>>>>>>>>>>> ./features/support/pages/Frontend/Cotton_On/Loyalty_Page.rb:22:in
>>>>>>>>>>>>>> `rewards_popup_description'
>>>>>>>>>>>>>> >>
>>>>>>>>>>>>>> >> Any stable way to do the job?
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> > --
>>>>>>>>>>>>>> > --
>>>>>>>>>>>>>> > Before posting, please read
>>>>>>>>>>>>>> https://github.com/watir/watir_meta/wiki/Guidelines-for-Posting-to-Watir-General-Google-Group.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> > In short: search before you ask, be nice.
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>> > [email protected]
>>>>>>>>>>>>>> > http://groups.google.com/group/watir-general
>>>>>>>>>>>>>> > [email protected]
>>>>>>>>>>>>>> > ---
>>>>>>>>>>>>>> > You received this message because you are subscribed to the
>>>>>>>>>>>>>> Google Groups "Watir General" group.
>>>>>>>>>>>>>> > To unsubscribe from this group and stop receiving emails
>>>>>>>>>>>>>> from it, send an email to [email protected].
>>>>>>>>>>>>>> > For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>> --
>>>>>>>>>> Before posting, please read
>>>>>>>>>> https://github.com/watir/watir_meta/wiki/Guidelines-for-Posting-to-Watir-General-Google-Group.
>>>>>>>>>>
>>>>>>>>>> In short: search before you ask, be nice.
>>>>>>>>>>
>>>>>>>>>> [email protected]
>>>>>>>>>> http://groups.google.com/group/watir-general
>>>>>>>>>> [email protected]
>>>>>>>>>> ---
>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>> Google Groups "Watir General" group.
>>>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>>>> send an email to [email protected].
>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>
>>>>>>>>> --
>>>>>>>> --
>>>>>>>> Before posting, please read
>>>>>>>> https://github.com/watir/watir_meta/wiki/Guidelines-for-Posting-to-Watir-General-Google-Group.
>>>>>>>>
>>>>>>>> In short: search before you ask, be nice.
>>>>>>>>
>>>>>>>> [email protected]
>>>>>>>> http://groups.google.com/group/watir-general
>>>>>>>> [email protected]
>>>>>>>> ---
>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>> Groups "Watir General" group.
>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>> send an email to [email protected].
>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>
>>>>>>> --
>>>>>> --
>>>>>> Before posting, please read
>>>>>> https://github.com/watir/watir_meta/wiki/Guidelines-for-Posting-to-Watir-General-Google-Group.
>>>>>>
>>>>>> In short: search before you ask, be nice.
>>>>>>
>>>>>> [email protected]
>>>>>> http://groups.google.com/group/watir-general
>>>>>> [email protected]
>>>>>> ---
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "Watir General" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to [email protected].
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>> --
>> --
>> Before posting, please read
>> https://github.com/watir/watir_meta/wiki/Guidelines-for-Posting-to-Watir-General-Google-Group.
>>
>> In short: search before you ask, be nice.
>>
>> [email protected]
>> http://groups.google.com/group/watir-general
>> [email protected]
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Watir General" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
> --
> --
> Before posting, please read
> https://github.com/watir/watir_meta/wiki/Guidelines-for-Posting-to-Watir-General-Google-Group.
>
> In short: search before you ask, be nice.
>
> [email protected]
> http://groups.google.com/group/watir-general
> [email protected]
> ---
> You received this message because you are subscribed to the Google Groups
> "Watir General" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
Before posting, please read 
https://github.com/watir/watir_meta/wiki/Guidelines-for-Posting-to-Watir-General-Google-Group.
 
In short: search before you ask, be nice.

[email protected]
http://groups.google.com/group/watir-general
[email protected]
--- 
You received this message because you are subscribed to the Google Groups 
"Watir General" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to