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.
