I’m testing a nightmarish website that in most situations sticks all the important stuff in an iframe.
However, there are other common situations where the system will, annoyingly, open a page in a new tab, but not wrapped in the iframe.
I’m trying to figure out a conditional method that will check for the existence of the iframe and use it, otherwise not.
Here’s what I’ve come up with, so far:
# The browser object...
@br = Watir::Browser.new
“frm” is the conditional method I’m trying to get working…
# Just an example element definition...
def click_my_button
@br.frm.button(id: "button").click
end
I define it in Watir’s Container module, like so:
module Watir
module Container
def frm
if frame(id: "iframeportlet").exist?
frame(id: "iframeportlet")
else
# This is the part that I can't figure out.
end
end
end
end
That works fine when the iframe is there, but not surprisingly I get a NilClass error when it’s not.
So, my question is: what can go into the else clause to make it work? More broadly, is there perhaps a better way to accomplish this? As you can imagine, I really want to avoid having to define every element in the web site twice.
I figured it out, and it’s quite simple. The frm method’s else clause just needs a “self”…
That’s it. I’d love to know if there are any hidden pitfalls with this approach, though.