My group usually doesn't handle web testing, but for this project some of it falls on me and I'm working out automation as I go. The site isn't public, or I'd just provide it for reference.
Using Selenium 2 and Python, I've managed to make some requested tests by reading documentation (and stack exchange) but I've hit a wall on checking text strings across languages.
There's an always-present language selector element on the site that provides a menu of supported languages and changes the display language for text throughout the site. All of the CSS selectors used stay the same throughout these language changes.
I know better than to make a separate copy of the test case for each language, since that will make updating and bugfixing too complicated. I'm not really sure what to do instead, though.
My best guess so far is to base the test around the language selector's current setting; set it at the start of the test and then use a string of if/elif statements to handle the string in each possible language. That at least works, but it feels clunky and overcomplicated.
What better ways are there to structure a test case for a situation like this?
import os dir = os.path.dirname(__file__) chrome_driver_path = [[the file path]] import unittest from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC lang = [[the CSS selector for the language change element]] site_lng = eng #can be eng/fra/ita/ger/spa class chrome_english(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Chrome(chrome_driver_path) cls.driver.maximize_window() cls.driver.get("https://www.url.com/"+site_lng+"/main") # wait for main logo or tests run before page elements have loaded WebDriverWait(cls.driver, 20).until(EC.presence_of_element_located((By.ID, "logo-large"))) @classmethod def tearDownClass(cls): cls.driver.close() def test_navLeft_03(self): e = self.driver.find_element_by_css_selector('div.menu-main>div:nth-child(2)>a').text if self.driver.find_element_by_css_selector(lang).text=="ENGLISH": self.assertEqual(e, 'News') elif self.driver.find_element_by_css_selector(lang).text=="FRANCAIS": self.assertEqual(e, 'Actualités') elif self.driver.find_element_by_css_selector(lang).text=="ITALIANO": self.assertEqual(e, 'Notizie') elif self.driver.find_element_by_css_selector(lang).text=="DEUTCH": self.assertEqual(e, 'Neuigkeiten') elif self.driver.find_element_by_css_selector(lang).text=="ESPANOL": self.assertEqual(e, 'Noticias')