Created
August 6, 2018 16:59
Revisions
-
peace899 created this gist
Aug 6, 2018 .There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,79 @@ import time from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from selenium.common.exceptions import TimeoutException, NoSuchElementException from selenium.webdriver.chrome.options import Options from selenium.webdriver.support.ui import Select username = 'admin' password = 'admin' modem_ip = '192.168.8.1' def is_page_loaded(browser, element_id): delay = 30 # seconds try: myElem = WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.ID, element_id))) return True except TimeoutException: return False def get_browser(): options = Options() options.set_headless(headless=True) browser = webdriver.Chrome(chrome_options=options) # Login home_url = 'http://{0}{1}'.format(modem_ip, '/html/home.html') browser.get(home_url) page_loaded = is_page_loaded(browser, 'index_connection_status') if page_loaded: browser.execute_script("return showloginDialog()") login_input = browser.find_elements_by_css_selector('input#username')[0] login_input.send_keys(username) password_input = browser.find_elements_by_css_selector('input#password')[0] password_input.send_keys(password) browser.find_elements_by_css_selector('input#pop_login')[0].click() time.sleep(5) return browser def wan_switch(browser): ethernet_url = 'http://{0}{1}'.format(modem_ip, '/html/ethernetsettings.html') browser.get(ethernet_url) select = Select(browser.find_element_by_id('select_wan_connection_mode')) options = [x for x in select.options] options = {i.get_attribute("value"): i.text for i in options} selected_option = select.first_selected_option.get_attribute("value") selected_mode = options[selected_option] wanted_options = {k: v for k, v in options.items() if v in ['LAN only', 'Dynamic IP']} if 'LAN' in selected_mode: wanted_option = [k for k,v in wanted_options.items() if 'LAN' not in v][0] else: wanted_option = [k for k,v in wanted_options.items() if 'LAN' in v][0] jquery_statement = '$("#select_wan_connection_mode").val("{}").\ trigger("change");'.format(wanted_option) time.sleep(2) browser.execute_script(jquery_statement) browser.find_element_by_id('span_apply_button').click() if __name__ == '__main__': browser = get_browser() wan_switch(browser)