VMG3312-B10B modeme nasıl request modülü ile reset atılabilir

Başlatan anti91, 26 Eylül 2020 - 04:09:55

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

anti91

VMG3312-B10B modeme nasıl request modülü ile reset atılabilir ?

Selenium bu işlem için çok ilkel kalıyor ekrana gui ile mouse tıklaması yapıyorum bu yüzden arkaplanda reset atamıyorum.

Bu modem için request modülü ile reset atabilecek var mı ? yoksa bana bu modül ile reset atabileceğim modem önerecek var mı ?

resetten kastım ip değiştirmek.... (web scraping yaparken)


#Selenium
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver import Firefox
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions.interaction import KEY
#Beautiful Soup
from bs4 import BeautifulSoup
import lxml.html

import time

import pyautogui


def router_reset():
   
    print ("Modem resetleniyor")
   
    driver = webdriver.Chrome('C:/Anaconda3/chromedriver.exe')
    driver.get('http://192.168.1.1/login.cgi')
   
    username = driver.find_element_by_id('AuthName')
    password = driver.find_element_by_id('AuthPassword')
    login = driver.find_element_by_xpath("//*[@id='login']/fieldset/ul/li[6]/input")
   
    username.send_keys("admin")
    password.send_keys("turktelekom")
    login.click()
   
    time.sleep(1)
    #Açılan Ekranı Atla Tuşu
    WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,'//*[@id="login"]/fieldset/ul/li[3]/input[2]'))).click()
   

    source = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,'//*[@id="network"]')))
    #target = driver.find_element_by_id("div2")
    target = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,'//*[@id="network"]')))
    # Create the object for Action Chains
    actions = ActionChains(driver)
    actions.drag_and_drop(source, target)
    # perform the operation on the element
    actions.click(target)
    actions.perform()

    WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'#network-broadband > a'))).click()

  # burası
    time.sleep(7)
    pyautogui.FAILSAFE = False
    pyautogui.click(770, 488)
    #WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'#boradbandTable > tbody > tr:nth-child(2) > td:nth-child(14) > div > ul > li'))).click()

    time.sleep(2)
    #Uygula Tuşu
    WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,'/html/body/div[3]/div[3]/button[2]'))).click()
    time.sleep(60)
    #hover = ActionChains(driver).move_to_element(element_to_hover_over)
    #hover.perform()
    print ("60 sn doldu, Koda devam et.")
    #Modemden çıkış yap
    WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,'//*[@id="logoutName"]'))).click()
    time.sleep(5)
    pyautogui.click(625, 648)
    time.sleep(1)
    driver.close()

barış

Temelde Selenium ile aslinda web arayuzlerinde rahatca islemler yapabilirsin. Ancak her modemin arayuzu birbirinden farkli oldugu icin, Selenium kutuphanesi kullanilarak yazilan kodun da modeme uygun hale getirilmesi gerekiyor.
Selenium ile arka planda calismak istiyorsan "headless" kullanabilirsin. Tarayiciyi da arka planda acmis olursun boylece.

Eger modem bir http arayuzu (api da olabilir) sunuyorsa, curl ile de reset atabilirsin onun icin Python kodu yazmana bile gerek kalmaz.