Re-rendering an entire page for each entry on a field is ridiculous 
regardless of the industry. I get legacy apps and business or security 
requirements, etc, etc, but this isn't 2002 any longer.

You are more than welcome to avoid the clear call by using #send_keys 
instead of #set


On Sunday, March 26, 2017 at 11:35:45 PM UTC-5, Raja gopalan wrote:
>
> Why? It's an insurance application, each and every entry need a 
> calculation So after enter the text field and pressing the tab key it 
> refreshes because background calculation is essential,  It's one of the 
> famous insurance application. Have you heard of 'IDIT'? 
>
> And not only that, @element.clear slows down the process, but writing 
> @element.send_keys [:control,"a"],*args doesn't slow down the process 
> because [:control,"a"] one of the key it doesn't require a big process like 
> @element.clear. Both does the same Job perfectly. 
>
> What we might be willing to do is to provide a command that will enter 
> text by JavaScript. I'm curious if that would solve your problem.
>
>
> what JavaScript code you are talking about? Is it 
>
> document.getElementById("something").value = 232
>
> Is this one?
>
> On Sunday, March 26, 2017 at 3:02:07 PM UTC-7, Titus Fortner wrote:
>>
>> No, it does not make sense to do that kind of workaround to a basic 
>> WebDriver call. A website that refreshes when making a clear call to a text 
>> field sounds like a nightmare to test, but that one is on whoever decided 
>> that could possibly be a good website design choice. :)
>>
>> What we might be willing to do is to provide a command that will enter 
>> text by JavaScript. I'm curious if that would solve your problem.
>>
>> On Sun, Mar 26, 2017 at 12:32 PM, Raja gopalan <[email protected]> 
>> wrote:
>>
>>> I completely agree, WATIR does it's extraordinary performance in the 
>>> case of stale element reference error, the only reason is because it 
>>> continue to invoke the find_element until it finds the element and I know 
>>> that's the reason WATIR avoids implicit wait. That's excellent. But you are 
>>> not caring certain places which falls into the infinite loop which I 
>>> explained earlier, For an example, 
>>>
>>> Consider this following code
>>>
>>> def set(*args)
>>>  element_call(:wait_for_writable) do
>>>  @element.clear
>>>  @element.send_keys(*args)
>>>  end
>>> end
>>>
>>>
>>> What my application does is, it refreshes the page after the clearing 
>>> the element, So after @element.clear,( since page got refreshed), @element 
>>> object is stale now, So @element.send_keys throws the error but it's been 
>>> caught by the given block below
>>>
>>> begin
>>>  send exist_check
>>>  yield
>>> rescue Selenium::WebDriver::Error::StaleElementReferenceError
>>>  retry
>>> ensure
>>>  Wait.timer.reset! unless already_locked
>>> end
>>>
>>> So it is retrying, but what happens is, once again it starts from the 
>>> beginning, So when it executes @element.clear, it once again goes to stale 
>>> state, So it falls into the infinite loop and it never comes out. So what 
>>> you would have done here is, 
>>>
>>> you could have written the code like given below
>>>
>>> def set(*args)
>>>  element_call(:wait_for_writable) do
>>>  @element.send_keys([:control,"a"],*args)
>>>  end
>>> end
>>>
>>>
>>> Now the problem solved because choosing the entire cell content and then 
>>> writing on it automatically does the clearing Job. So the element doesn't 
>>> go stale in this case.
>>>
>>>
>>>
>>>
>>> On Friday, March 24, 2017 at 12:25:36 PM UTC-7, Titus Fortner wrote:
>>>>
>>>> Yes, Watir is slower. Think of Selenium as a "Do What I Say" tool. If 
>>>> you can enumerate exactly what you need using its low level commands then 
>>>> you can be very performant. Watir is a "Do What I Mean" tool. Watir's goal 
>>>> is not speed, but ease of writing, ease of maintenance, consistency of 
>>>> results, and usefulness of error messages for debugging.
>>>>
>>>> There are many advantages to using Watir over Selenium directly which I 
>>>> need to spend time enumerating in a blog post at some point, but the two 
>>>> most important things that Watir does right now is automatically handle 
>>>> Stale Element Reference errors (the bane of many test automation suites), 
>>>> and automatically wait for the site's condition to be synchronized with 
>>>> what is expected of the test based on the Watir code. There are many other 
>>>> conveniences that may not always be needed but are provided by default so 
>>>> that no user has to do extra work to handle it when it is necessary.
>>>>
>>>> Watir can slow things down a little or a lot depending on what you are 
>>>> trying to do. I have some ideas to increase performance in some 
>>>> situations, 
>>>> but again, my focus is primarily on making it easy for people who don't 
>>>> know all the details of their website's implementation to get consistent 
>>>> results.
>>>>
>>>> Titus
>>>>
>>>>
>>>> On Thursday, March 23, 2017 at 12:16:00 PM UTC-5, Raja gopalan wrote:
>>>>>
>>>>> Titus, I stongly believe checking enabled? present? writable? methods 
>>>>> are unnecessary calls by WATIR because we know what kind of field we are 
>>>>> going to interact so these calls to every element slows down the process 
>>>>> So 
>>>>> what I did was, I have CALLED the driver out of WATIR and started writing 
>>>>> selenium code and wherever I want the help of WATIR help like 
>>>>> b.table.rows.each, I will write watir code and also If I know there are 
>>>>> certain element starts to appear after the click then I write watir code, 
>>>>> So I am mixing the selenium code and WATIR code as shown below, 
>>>>>
>>>>> For an example, look at the code below and see how I have mixed the 
>>>>> selenium code and WATIR CODE 
>>>>>
>>>>> require 'watir'
>>>>>
>>>>> class Cable
>>>>>
>>>>>   def initialize
>>>>>     caps = Selenium::WebDriver::Remote::Capabilities.firefox(marionette: 
>>>>> false)
>>>>>     @b=Watir::Browser.new :firefox, desired_capabilities: caps
>>>>>     @b.goto 'smcnet.in/'
>>>>>     @[email protected]
>>>>>   end
>>>>>
>>>>>   def call
>>>>>     @driver.find_element(:id, 'username').send_keys 'raja'
>>>>>     @driver.find_element(:id, 'password').send_keys ''
>>>>>     @driver.find_element(:xpath, "//*[@value='Log In']").click
>>>>>     @driver.find_element(link: 'My Plan').click
>>>>>     @b.element(xpath: "//span[normalize-space(.)='usage details']").click 
>>>>>    # WATIR CODE
>>>>>     puts @b.div(:text, 'MB Used').following_sibling.span.text             
>>>>>    # WATIR CODE
>>>>>     puts @b.div(:text, 'Days Remaining').following_sibling.span.text      
>>>>>    # WATIR CODE
>>>>>     @driver.find_element(link: 'Hi, RAJAGOPALAN M').click
>>>>>     @driver.find_element(:xpath, '//li[3]/a').click
>>>>>     # @driver.quit
>>>>>   end
>>>>> end
>>>>>
>>>>>
>>>>> On Thursday, March 23, 2017 at 10:06:26 AM UTC-7, Titus Fortner wrote:
>>>>>>
>>>>>> Yes, #present? is a combination of #exists? and #visible?
>>>>>>
>>>>>> Also, with Watir 6, you are less likely to need to make this call 
>>>>>> explicitly in the code. Taking actions on an element will automatically 
>>>>>> wait for element to be present if necessary.
>>>>>>
>>>>> -- 
>>> -- 
>>> Before posting, please read http://watir.com/support. 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 http://watir.com/support. 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