I think this one is pointing to some span which is hidden because this error was thrown
Uncaught exception: element located, but timed out after 30 seconds, waiting for #<Watir::Span: located: true; {:title=>"Subject", :tag_name=>"label"} --> {:tag_name=>"div", :adjacent=>:following} --> {:tag_name=>"lf-select"} --> {:tag_name=>"div"} --> {:tag_name=>"span"}> to be present On Wednesday, 29 May 2019 20:59:59 UTC+5:30, Justin Ko wrote: > > 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/0e15c363-910d-4ca0-8e87-2184fdf9e542%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.