Selenium IDE: check if all links have text
I needed to check if all links of a menu (extracted from the database of a CMS) had their corresponding link text properly set, because the final contributor of the website could forget to set that field when creating a new page.
My first thought was to use the CSS :empty selector, but it doesn't match elements with a simple whitespace (sight...), so I had to use a javascript snippet instead.
But I realized that it wouldn't be an easy task, as the command verifyEval is too restrictive. I cannot use jQuery for example, nor can I use functions, loops or other useful structures, but just a simple javascript expression to eval.
So, after 1 hour spent googling, I succeeded creating the expression I needed:
Array.prototype.slice.call(document.querySelectorAll("#menu ul.col a")).every(function(e){return e.textContent.trim().length > 0})
What I'm doing there is:
- Take every element that satisfies the CSS selector with document.querySelectorAll()
- As the previous function returns a NodeList object, I need to convert it to an array so I can work properly with it. That's done with the Array.prototype.slice.call() method.
- Now I need to check if every element in the array meet certain condition, so I take advantage of the Array.every() method for that purpose.
- Finally the easy stuff: a callback for the Array.every() method that returns a boolean indicating whether the text of the element is present or not.
Regards!
Written by Santiago Aparicio García
Related protips
Have a fresh tip? Share with Coderwall community!
JavaScript on a page runs with the privileges of that origin. One altered library, tag manager, or snippet can read inputs, change what people see, and call your APIs as the user.
Security insights from Cside