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.
