> You realize you are effectively trying to 'mansplain' to one of the 
> developers of Watir why not to use a majority of the Watir API?   If you 
> are just going to use b.element all the time, instead of making use of the 
> Watir API and object model, then what is even the point of using Watir?  
> why not just use nakid Webdriver?



I am not sure how my message is reaching you this way! I seriously wonder! 
I have never asked to b.element() all the time, only when it's required!  
As I explained,

b.element(link: 'something').click

the aforementioned code would click the visible link, how do you achieve by 
standard WATIR api? there is a way you could write

b.link(text: 'something', visible: 'true').click

but the above code would perform the iteration to find out the visible 
link. So why not someone can simply use the code which I mentioned? 
b.element() is NOT completely equivalent to driver.find_element(), it does 
element_call before it interacts the element, it waits for  exists? 
visible? enabled? before it interacts the element, but if you use 
driver.find_element() plainly then it's waiting is depending upon which 
native driver you are using. So b.element() uses WATIR advantages here.



I'm only a water user and ex 'support sherif', not a committer, so my 
> opinion may not hold as much Weight as Titus's, but my approach has always 
> been to use the method/object (one begets the other) closest to the HTML 
> element type I am dealing with.  So if I am working with a div, I use 
> b.div  etc.  I only use b.element as a last resort.   I honestly don't care 
> how watir casts my selections and if it's sending xpath to the driver or 
> not, I'm happy to use the API as intended as this for me results in the 
> cleanest easiest to read code.. That said, I avoid actual xpath in how I 
> specify selections, where I prefer to use watir's native selectors, or css 
> selectors and only use xpath if nothing else will work.  (because I find 
> xpath hard for humans to read, and often brittle if long paths are given)   


 
I usually select the code according to the usuage, for an example,

If you use

b.element(id: 'something').click

it would no way differ from the below code

b.div(id: 'something').click

because WATIR  coverts the both of the above code into 

driver.find_element(id: 'something').click

So if you use b.div() or b.element() it doesn't differ much in any way

But there is a difference when you pass the locators which are not in 
selenium webdriver's list and it's specific to WATIR

for an example, 

If you write

b.element(text: 'something').click

this absolutely differ from the following code

b.div(text: 'something').click

WATIR coverts the first one into

driver.find_element(xpath: "//*[normalize-space()='something']).click

and it converts the second one into

driver.find_element(xpath: "//div[noramlize-space()='something']).click

Do you feel the difference? 


And also WATIR does the tremendous difference while forming xpath in some 
other places when we have long path but I am not going write about that 
here since you are not much interested in xpath and how WATIR converts at 
the back. 

On Thursday, October 26, 2017 at 4:50:33 AM UTC+5:30, Chuck van der Linden 
wrote:
>
> On Wednesday, October 25, 2017 at 12:30:36 AM UTC-7, 
> rajagopal...@gmail.com <javascript:> wrote:
>>
>> Please reject my last mail, I was wrong about b.link(link_text: 
>> 'something').click
>>
>> Read this one, I have explained the advantage of link: over xpath:
>> b.element(text: 'something').click
>>
>>
>> It would create the selenium equivalent of 
>>
>> driver.find_element(xpath: "//*[noramlize-space()='something']").click
>>
>> It would perfectly work if this xpath matches only one, but there are 
>> more and rest of them are hidden it would choose to click the first one, 
>> not the one which is visible, but If you write the below code
>>
>> b.element(link: 'something').click
>>
>> It would write the selenium equivalent of 
>>
>> driver.find_element(link: 'something').click
>>
>>
>> it would perfectly choose the visible one by rejecting all the invisible 
>> one, 
>>
>>
>> You may say to me that I could achieve the same by passing 'visible: 
>> true' as the second parameter, but WATIR does here is, it iterates over all 
>> the links before it chooses the visible one. 
>>
>> So using link: over xpath: has many advantages, That's why I said we need 
>> to go for xpath when we can't use any other available locators. 
>>
>>>
>>>>>
>
>
> I'm only a water user and ex 'support sherif', not a committer, so my 
> opinion may not hold as much Weight as Titus's, but my approach has always 
> been to use the method/object (one begets the other) closest to the HTML 
> element type I am dealing with.  So if I am working with a div, I use 
> b.div  etc.  I only use b.element as a last resort.   I honestly don't care 
> how watir casts my selections and if it's sending xpath to the driver or 
> not, I'm happy to use the API as intended as this for me results in the 
> cleanest easiest to read code.. That said, I avoid actual xpath in how I 
> specify selections, where I prefer to use watir's native selectors, or css 
> selectors and only use xpath if nothing else will work.  (because I find 
> xpath hard for humans to read, and often brittle if long paths are given)   
>

-- 
-- 
Before posting, please read http://watir.com/support. In short: search before 
you ask, be nice.

watir-general@googlegroups.com
http://groups.google.com/group/watir-general
watir-general+unsubscr...@googlegroups.com

--- 
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 watir-general+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to