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] <javascript:>> 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] <javascript:>
>> http://groups.google.com/group/watir-general
>> [email protected] <javascript:>
>> --- 
>> 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] <javascript:>.
>> 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