问题
Currently I am building a web portal using RoR, MySQL, HTML, CSS and jQuery etc., I got a request from my automation test engineer to add ID attributes(if possible NAME attribute also) to all the elements of my application.
I am confused to do this perhaps I am not sure whether it is a good practice or not, so can anybody please help me with specific disadvantages/issues with adding ID attributes to all elements of my application.
Thanks,
Siva
回答1:
To do reliable frontend tests, you need to be able to identify certain elements without using overly specific selectors (which you need, if you have no reference elements). A selector like body div:nth-of-type(4) ul li:nth-child(5) a
to check a certain link is not only obviously ugly, but also prone to changes in the markup. A small change could break half of your testsuite. To avoid this, there are several ways to make your test engineer's life easier:
The bad way
would be to assign id
s to all your page elements...
The good way
is the following approach:
- Make use of the new semantic tags like <nav>, <header>, <footer>, <main>, and <section>.
With these elements you can build the basic structure of your page. - Assign
id
s to important/unique page elements. Use them sparingly, use meaningful names and keep in mind thatid
s represent unique elements (may only occur once on the page)! - Use the
class
attribute to group more than one elements with similar characteristics (for example navigation elements, external/internal anchors, interaction elements,...) - Avoid
name
attributes, or use only if necessary. HTML5 deprecated this attribute on certain elements like the<a>
, so I would avoid it altogether. It's not necessary considering all the other options you have.
Finally, you should have a pair programming session with your test engineer to get a better feeling, what his needs are, so you don't plaster the page with useless markup.
回答2:
The id
s allow to reliably find the specific elements on a page, even if the markup around the elements changes (e.g. for a visual refresh).
On the other hand, extraneous id
s increase the page download size and memory footprint.
The id
s are also expected to be unique, so coming up with a unique id for every element on a page will be hard, but that's probably not what is needed for the test automation anyway.
来源:https://stackoverflow.com/questions/16153986/adding-id-attribute-to-all-html-elements-of-a-web-application