Behat and bad HTML

Posted: 2014-01-11 17:48:00

Some of the sites we are testing have HTML that has multiple ID that are the same. Or elements that do not really have enough info to get a class, name, label or ID out of.

This has been a challenge and there are a few custom steps made to help get through this


Switching to an Iframe with no name or id

This was hard since the default was to target the ID of the frame or name.

Thanks to the help of this thread!topic/behat/z0z3DscjzhU I was able to pull it off.

First, using jQuery and JavaScript I enable the user to target an Iframe by finding the ID of the div that surrounds it. Second I give the frame a name / id to target.

Then I the user can choose one of or other custom steps noted below to switch to the frame. The code still needs better error checking e.g. if the element does not exist.

Finding a Submit button on the page when there are 2 with the same name and ID

This snippet allows the user to target a specific element on the page by adding a number. This was done a couple of months ago and at this point I think we have a better way to do it. I will show that below.

Clicking Submit on a form with no button

There are a few ways to do this. So far this one seem to be working best.

Of course if the form does not have an ID we would be in trouble.

Switching to a popup window that has no name

Finally this was the toughest one. We had to use a different branch of Mink to do this. This thread was key to getting this to work!topic/behat/QNhOuGHKEWI

What we ended up with was basically from that thread

Dealing with Alerts

Dealing with built in browser alerts was found in those threads as well.

I then wrote a helper that I use in other methods to do this.

Since all the steps are called from a web form they user can choose to "Click and Alert" as needed.






Comparing the Size of an element to the Window

Lastly (really this time) we have to check the size of an element to make sure it meets requirements.

This custom steps allows the user to enter a class to get the height of and enter the % it should be of the window.


Noted in comments this might help as well