#!/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 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: sites = driver.find_element(By.TAG_NAME, "nav").find_elements(By.XPATH, "./div/div") except: print("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") link_element.click() 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: print("Couldn't find the element somewhere...") driver.close() driver.quit() return False return True def execute_tests(): # Set up webdriver and necessary variables for later chrome_options = webdriver.ChromeOptions() print('Attempting to establish connection to remote webdriver...') driver = webdriver.Remote(command_executor='http://192.168.0.202:4444', options=chrome_options) print('Connection established.') # Load requested site print('Attempting to get page...') driver.get("https://werefox.cafe") print('Page loaded.') # Check all the subdomain buttons work print('Attempting to click through subdomain buttons...') if(check_subdomains(driver)): print('Test succeeded.') else: print('Test failed.') # Close browser and lean up driver.close() driver.quit() execute_tests()