And, no it isn't automatically relooking up stale in the applicable method 
here, because this is not a use case we anticipated, but it is something we 
can fix.


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] 
> <javascript:> 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] <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.

Reply via email to