Which is the working one? The code appears to be the same for both the 
working and not working one.

I assume that the working one is the original :xpath locator you were 
trying to convert. If that's the case, I would guess you are running into 
how Watir returns the first match of each individual method call rather 
than the first matching the entire series of chained methods.

For example, your Watir code should work for:

<html>
  <body>
    <label title="Subject">Label</label>
    <div><lf-select><div><span>Value</span></div></lf-select></div>
  </body>
</html>

But it will not work for:

<html>
  <body>
    <label title="Subject">Label</label>
    <div>another</div>
    <div><lf-select><div><span>Value</span></div></lf-select></div>
  </body>
</html>

Notice in the failed page that there is an extra div between the label and 
div containing lf-select. The code, label(title: 'Subject').
following_sibling(tag_name: 'div'), finds the first sibling of the label, 
regardless of whether it contains the lf-select. In contrast, the :xpath 
locator does consider the div children and therefore ignores the first 
sibling.

Assuming you are in the second example, you will need to tell Watir more 
specifically which following sibling you need. 

I suppose the closest representation to the XPath, would be to iterate over 
the siblings until you find the one with the lf-select:

browser.label(title: 'Subject').following_siblings(tag_name: 'div')
  .find { |e| e.element(tag_name: 'lf-select').exists? }
  .element(tag_name: 'lf-select').div.span.text

If you know the exact position of the sibling you could simplify this to:

browser.label(title: 'Subject').following_sibling(tag_name: 'div', index: 1
).element(tag_name: 'lf-select').div.span.text

#following_sibling accepts the usual locators, so you could use whatever 
identifiable attributes it has.

Justin


On Wednesday, May 29, 2019 at 3:10:58 AM UTC-4, rajagopalan madasami wrote:
>
> I have written the following code
>
> b.label(title: 'Subject').following_sibling(tag_name: 
> 'div').element(tag_name: 'lf-select').div.span.click
>
>
>
> It throws this error of element not present
>
> But this one
>
> b.label(title: 'Subject').following_sibling(tag_name: 
> 'div').element(tag_name: 'lf-select').div.span.click
>
>
>
> works fine.
>
>
> On Tuesday, 28 May 2019 19:52:13 UTC+5:30, Titus Fortner wrote:
>>
>> I'd need to see the underlying html to know for sure, but it looks like 
>> you want to specify the tag name of the following sibling 
>> `following_sibling(tag_name: 'div')`
>>
>>
>>
>> On Tuesday, May 28, 2019 at 8:45:37 AM UTC-5, rajagopalan madasami wrote:
>>>
>>> Justin,
>>>
>>> Can you please help me to write this code in watir?
>>>
>>> b.span(xpath: 
>>> "//label[@title='Subject']/following-sibling::div/lf-select/div/span").click
>>>
>>>
>>> I have tried this
>>>
>>> b.label(title: 'Subject').following_sibling.element(tag_name: 
>>> 'lf-select').div.span.click
>>>
>>> But it's not working. 
>>>
>>> Can you help me here?
>>>
>>>
>>> On Tuesday, 28 May 2019 18:56:52 UTC+5:30, Justin Ko wrote:
>>>>
>>>> For custom elements, you will need to use the #element method:
>>>>
>>>> b.element(tag_name: 'lf-select')
>>>>
>>>> Justin
>>>>
>>>>
>>>> On Tuesday, May 28, 2019 at 1:15:05 AM UTC-4, rajagopalan madasami 
>>>> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> I have a custom tag named `lf-select`
>>>>>
>>>>> Can't I call in WATIR like
>>>>>
>>>>> b.lf_select()
>>>>>
>>>>> Or something like that? Or Is there anyway?
>>>>>
>>>>

-- 
-- 
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.

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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/watir-general/9b6282ec-decf-4f63-902d-8ffa7d07f788%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to