Ah that's very negligible! I believe I can add that in my current project. On Tue 7 Aug, 2018, 11:11 PM Justin Ko, <[email protected]> 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.
