#!/usr/bin/python # Necessary imports 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 from robot.api.logger import info, debug, trace, console, error from footer_test import check_footer_links def check_subdomains(driver): # setup wait and grab original tab/window wait = WebDriverWait(driver, 10) main_tab = driver.current_window_handle # Try to grab button elements of maintained subdomains try: site_lists = driver.find_elements( By.TAG_NAME, "nav") sites = [] for l in site_lists: sites += l.find_elements(By.XPATH, ".//a") except: error("Couldn't find the element.") driver.close() driver.quit() return False # Iterate through subdomains for e in sites: try: # link_element = e.find_element(By.XPATH, "./a") e.click() info(e.text) wait.until(expected_conditions.number_of_windows_to_be(2)) for window_handle in driver.window_handles: if window_handle != main_tab: driver.switch_to.window(window_handle) driver.close() driver.switch_to.window(main_tab) except: error("Couldn't find the element somewhere...") driver.close() driver.quit() return False return True def setup_webdriver(remote_url): # Set up webdriver and necessary variables for later chrome_options = webdriver.ChromeOptions() info('Attempting to establish connection to remote webdriver...') driver = webdriver.Remote( command_executor=remote_url, options=chrome_options) info('Connection established.') return driver def teardown_webdriver(driver): # Close browser and lean up driver.close() driver.quit() def execute_tests(driver, site_url): # Load requested site info('Attempting to get page...') driver.get(site_url) info('Page loaded.') # Check all the buttons work info('Attempting to click through subdomain buttons...') # Check the subdomain buttons if (not check_subdomains(driver)): info('Test failed.') return False # Check the footer buttons elif (not check_footer_links(driver)): info('Test failed.') return False else: info('Test succeeded.') return True