Programmatically changing wireless router settings - Netgear ideally

后端 未结 7 2038
情深已故
情深已故 2021-02-07 05:00

Is it possible to programmatically change settings on a Netgear wireless router using C#? I have settings that I change often and I would like to create my own interface for ma

7条回答
  •  佛祖请我去吃肉
    2021-02-07 05:45

    Selenium offers a firefox plugin that lets you record manual interactions with your browser. And then you can export the steps to python, ruby, java or c#. It worked for me to programmatically adjust my router settings to turn off wifi. Clicking on the elements while recording identifies everything you need.

    This code works on an Actiontec MI424WR (FIOS)
    Edit the code to add your username, password, and router address.

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import Select
    from selenium.common.exceptions import NoSuchElementException
    from selenium.common.exceptions import NoAlertPresentException
    import unittest, time, re
    
    class Routr(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Firefox()
            self.driver.implicitly_wait(30)
            self.base_url = "http://routerip_or_address"
            self.verificationErrors = []
            self.accept_next_alert = True
    
        def test_routr(self):
            driver = self.driver
            driver.get(self.base_url + "/")
            driver.find_element_by_name("user_name").clear()
            driver.find_element_by_name("user_name").send_keys("your_username")
            driver.find_element_by_id("pass2").clear()
            driver.find_element_by_id("pass2").send_keys("enter_your_password_here")
            driver.find_element_by_link_text("OK").click()
            driver.find_element_by_link_text("Change Wireless Settings").click()
            driver.find_element_by_id("ws_off").click()
            driver.find_element_by_link_text("Apply").click()
    
        def is_element_present(self, how, what):
            try: self.driver.find_element(by=how, value=what)
            except NoSuchElementException, e: return False
            return True
    
        def is_alert_present(self):
            try: self.driver.switch_to_alert()
            except NoAlertPresentException, e: return False
            return True
    
        def close_alert_and_get_its_text(self):
            try:
                alert = self.driver.switch_to_alert()
                alert_text = alert.text
                if self.accept_next_alert:
                    alert.accept()
                else:
                    alert.dismiss()
                return alert_text
            finally: self.accept_next_alert = True
    
        def tearDown(self):
            self.driver.quit()
            self.assertEqual([], self.verificationErrors)
    
    if __name__ == "__main__":
        unittest.main()
    

提交回复
热议问题