Hi Titus,
Can you please let me know whether my code is okay now?
def waitAndClickButton(locator, action, name, data)
puts "ClickButton : #{name}"
sleep 2
loc = getLocator(locator)
@b.div(id: "spinnerOverlay").wait_while(&:present?)
@b.button(loc.first => loc.last).click
@b.div(id: "spinnerOverlay").wait_while(&:present?)
end
On Tue, 6 Nov 2018 at 23:46, 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.