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.

Reply via email to