I am not clicking any alert before the button. And also Let me check your solution first and if it works fine then I raise the defect. So now I need to wait for spinner to disappear before and after the click. Okay.
On Tue 6 Nov, 2018, 11:46 PM Titus Fortner <[email protected] wrote: > I posted it above: > @b.alert.ok > @b.div(id: "spinnerOverlay").wait_while(&:present?) > @b.button(id: "NavContinue").click > > But we can make this better in the Watir code which is why I asked if you > could also raise the issue on Github. > > > > On Tuesday, November 6, 2018 at 12:12:32 PM UTC-6, rajagopalan madasami > wrote: >> >> Okay. Can you please tell me what order should I need to write the code? >> >> And I have a question, If element goes stale then WATIR automatically >> regains the element , right ? It regain in many places which I see. >> >> On Tue 6 Nov, 2018, 11:39 PM Titus Fortner <[email protected] wrote: >> >>> It's failing because it goes stale. It goes stale because there is a >>> refresh on the page, the refresh on the page happens after the spinner that >>> the alert kicks off. The problem is that the element is located before the >>> spinner, and for it to work right now, you have to wait until after the >>> spinner to locate the element. However you organize it in the code, it >>> needs to be in that order not the order you have. >>> >>> >>> >>> On Tuesday, November 6, 2018 at 11:37:01 AM UTC-6, rajagopalan madasami >>> wrote: >>>> >>>> I am calling this function >>>> >>>> def waitForPageLoad >>>> >>>> @b.wait_until(timeout: @Page_Load) {@b.execute_script("return >>>> (jQuery.active === 0)").eql? true} >>>> end >>>> >>>> function in every click function like >>>> >>>> def clickButton(locator, action, name, data) >>>> puts "ClickButton : #{name}" >>>> loc = getLocator(locator) >>>> @b.button(loc.first => loc.last).click >>>> waitForPageLoad >>>> end >>>> >>>> Do you see the clickButton method >>>> >>>> calls waitForPageLoad at the end so it waits for the spinner disappear. So >>>> it doesn't click on the spinner. Even if it clicks at the >>>> >>>> spinner it retry it because I have included >>>> Selenium::WebDriver::Error::ElementClickInterceptedError >>>> >>>> rescue Selenium::WebDriver::Error::ElementNotVisibleError, >>>> Selenium::WebDriver::Error::ElementNotInteractableError,Selenium::WebDriver::Error::ElementClickInterceptedError >>>> raise_present unless Wait.timer.remaining_time.positive? >>>> raise_present unless %i[wait_for_present wait_for_enabled >>>> wait_for_writable].include?(precondition) >>>> retry >>>> >>>> So all I am seeing here is, It perfectlys lands on a page, and it >>>> successfully enters into the click method but it waits for 30 seconds and >>>> it fails. >>>> >>>> >>>> >>>> >>>> On Tue, 6 Nov 2018 at 22:51, Titus Fortner <[email protected]> wrote: >>>> >>>>> Yes, this makes sense from the code perspective. >>>>> >>>>> What your site is doing is requiring you to accept an alert, then it >>>>> does some kind of processing, then it refreshes some/all of the page. >>>>> >>>>> Your code is trying to click the element before the refresh has >>>>> happened, and because of the way you are rescuing it, it is giving you >>>>> misleading information. The element was located but couldn't be used, >>>>> then at the point it is trying to be used it is stale, and that method >>>>> isn't relocating when stale. >>>>> >>>>> Can you raise an issue on Github with this gist? Something like "Watir >>>>> should relocate stale elements when trying to click them" >>>>> >>>>> In the meantime, something like this should work: >>>>> >>>>> @b.alert.ok >>>>> @b.div(id: "spinnerOverlay").wait_while(&:present?) >>>>> @b.button(id: "NavContinue").click >>>>> >>>>> >>>>> On Tue, Nov 6, 2018 at 10:56 AM <[email protected]> wrote: >>>>> > >>>>> > Hi Titus, >>>>> > >>>>> > Here is the gist url >>>>> > >>>>> > >>>>> https://gist.github.com/Rajagopalan-M/ba78aed6342c61d07968cfe195d3f4de >>>>> > >>>>> > -- >>>>> > -- >>>>> > 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.
