Selen bietet eine firefox plugin, mit der Sie manuelle Interaktionen mit Ihrem Browser aufzeichnen können. Und dann können Sie die Schritte zu Python, Ruby, Java oder C# exportieren. Es funktionierte für mich, um meine Routereinstellungen programmatisch anzupassen, um wifi auszuschalten. Wenn Sie während der Aufnahme auf die Elemente klicken, wird alles angezeigt, was Sie benötigen.
Dieser Code funktioniert auf einem Actiontec MI424WR (FIOS)
Bearbeiten Sie den Code, um Ihren Benutzernamen, Ihr Kennwort und Ihre Routeradresse hinzuzufügen.
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()
Die grundlegende Bereichsauthentifizierung ist korrekt. Ich kann mich anmelden, aber ich bin mir nicht sicher, wie ich bestimmen soll, welche HTTP-Anfragen an den Router gesendet werden, um einen Benutzer zu simulieren, der auf der Benutzeroberfläche navigiert. Irgendwelche Vorschläge? – DarLom
Nun, Sie haben zwei Möglichkeiten: 1: Reverse-Engineer der Web-UI 2: Verwenden Sie ein System wie Firebug, um zu sehen, wie die Anforderungen gehen. Ich würde Nummer 2 empfehlen. – chris12892
Ich stimme zu, verwenden Sie einen Web-Debug-Proxy wie Fiddler –