Accessibility in the context of a software application means that as many people as possible can use the application easily. When making an application accessible, we should consider users with limited vision or hearing, limited cognitive ability, and limited dexterity. Accessibility also means that users from all over the world can use the application, even if their language is different from that of the developers who created it.
In this final post in my "Easy Free Automation" series, I'll be showing two easy ways to test for accessibility. I'll be using Python and Selenium Webdriver. You can download the simple test here.
To run the test, you will need to have Python and Selenium installed. You can find instructions for installing Python in Easy Free Automation Part I: Unit Tests. To install Selenium, open a command window and type pip install selenium. You may also need to have Chromedriver installed. You can find instructions for installing it here.
Once you have downloaded the test file and installed all the needed components, navigate to the test folder in the command line and type python3 easyFreeAccessibilityTest.py. (If you don't have Python 3, or if you don't have two versions of Python installed, you may be able to type python instead of python3.) The test should run, the Chrome browser should open and close when the test is completed, and in the command line you should see these two log entries:
Alt text is present
Page is in German
Let's take a look at these two tests to see what they do. The first test verifies that an image has an alt text. Alt texts are used to provide a description of an image for any user who might not be able to see the image. A screen-reading application will read the alt text aloud so the user will know what image is portrayed.
elem = driver.find_element_by_class_name("s-image")
val = elem.get_attribute('alt')
if val == 'Goodnight Moon':
print('Alt text is present')
print('Alt text is missing or incorrect')
In the first line, we are navigating to an Amazon.com web page where we are searching for the children's book "Goodnight Moon". In the next line, we are locating the book image. In the third line, we are getting the 'alt' attribute of the web element and assigning it to the variable 'val'. If there is no alt text, this variable will remain null.
Finally we are using an if statement to assert that the alt text is correct. If the alt text is not the title of the book, we will get a message that the text is missing.
The second test verifies that we are able to change the language of the Audi website to German.
elem = driver.find_element_by_link_text("Kontakt")
print('Page is in German')
print('Page is not in German')
In the first line, we navigate to the Audi website. In the second line, we find the button that will change the language to German, and we click it. Then we look for the element with the link text of "Kontakt". If we find the element, we can conclude that we are on the German version of the page. If we do not find the element, the page has not been changed to German. The reason I am using a try-except block here is that if the element with the link text is not located, an error will be thrown. I'm catching the error so that an appropriate error message can be logged and the test can end properly.
There are other ways to verify things like alt texts and page translations. There are CSS scanning tools that will verify the presence of alt texts and rate how well a page can be read by a screen reader. There are services that will check your internationalization of your site with native speakers of many different languages. But if you are looking for an easy, free way to check these things, this simple test script provides you with a way to get started.
For the last eight weeks, we've looked at easy, free ways to automate each area of the Automation Test Wheel. I hope you have found these posts informative! If you missed any of the posts, I hope you'll go back and take a look. Remember also that each week has a code sample that can be found at my Github page. Happy automating!
Last week , I wrote about the importance of input validation for the security, appearance, and performance of your application. An astute r...
There are a great many articles, blog posts, and presentations that discuss automation frameworks and strategies. But even the most robust ...
Anyone who has spent time working on test automation has likely heard of the Test Automation Pyramid. The pyramid is typically made of thre...
More and more companies are moving toward a microservices model for their applications. This means that different sections of their applica...