Selenium ofrece un firefox plugin que le permite registrar interacciones manuales con su navegador. Y luego puede exportar los pasos a python, ruby, java o C#. Me funcionó ajustar programáticamente la configuración de mi enrutador para desactivar wifi. Al hacer clic en los elementos durante la grabación, identifica todo lo que necesita.
Este código funciona en un Actiontec MI424WR (FIOS)
Edite el código para agregar su nombre de usuario, contraseña y dirección del enrutador.
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()
La autenticación del dominio básico es correcta. Puedo iniciar sesión, pero no estoy seguro de cómo determinar qué solicitudes HTTP enviar al enrutador para simular a un usuario que navega por la interfaz de usuario. ¿Alguna sugerencia? – DarLom
Bueno, tiene dos opciones: 1: Ingeniería inversa de la interfaz de usuario web 2: Use un sistema como Firebug para ver cómo se están procesando las solicitudes. Recomendaría el número 2. – chris12892
Acepto utilizar un proxy de depuración web como el violinista –