Селен не загружает элементы позже - PullRequest
0 голосов
/ 08 сентября 2018

Я пытался создать скрипт Python, который будет входить на страницу моего маршрутизатора, регистрировать все подключенные устройства, а затем отображать их по их подключенным именам. Я сделал скрипт, который выглядит так:

from requests import session
from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep


url = "http://192.168.1.1/login/login.html"
browser = webdriver.Chrome()
wait = WebDriverWait(browser, 100)
browser.get(url)
kad = browser.find_element_by_id("AuthName")
password = browser.find_element_by_id("AuthPassword")
kad.send_keys("MyRouterLoginName")
password.send_keys("MyRouterLoginPassword")
buton = browser.find_element_by_xpath("/html/body/div[2]/div[2]/div[2]/div/ul/li/div[3]/form/fieldset/ul/li[6]/input") #this is my login button
buton.click()
homepage = "http://192.168.1.1/index.html"
browser.get(homepage) #Router asks for changing default password, i skip it like that
sleep(5)
verify = browser.find_element_by_css_selector('body')
print(verify.text) #see my later explanation
xpathmethod = browser.find_element_by_xpath("/html/body/div[3]/div/div/div/div[3]/div/table/tbody/tr/td[3]/div/ul[1]/li[1]/div[2]/a")
print(xpathmethod.text)
print("Finding by css")
content = browser.find_element_by_css_selector('.addmenu')
print(content.text)

Строка проверки состояла в том, чтобы убедиться, что веб-страница была полностью загружена, но здесь есть проблема, в то время как веб-страница загружается, сначала она загружает элементы меню по умолчанию (такие как состояние подключения, настройки сети, устранение неполадок и т. Д.), Затем загружает устройства, которые в настоящее время подключен. Webdriver почему-то не распознает секцию подключенных устройств и выдает ошибку «невозможно найти элемент». Я пробовал методы селектора xpath и css, но оба они дают один и тот же результат. Извините, я не могу вставить HTML полностью, но вот путь, который дает мне Chrome, когда я проверяю элемент

html body div.index div div #mainframe html body div div #contentPanel #mapView div div table tbody tr td div #wlInfo li div a

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Найден другой способ получить список подключенных устройств.Модем имеет страницу ConnectionStatus, где он дает мне полный список, включающий MAC-адреса и другие детали в одной строке.Теперь мне нужно разобрать их.Создадим еще один вопрос по этому поводу.

0 голосов
/ 08 сентября 2018

Вам нужно что-то вроде этого:

try:
    # Load page
    browser.get("http://192.168.1.1/index.html")
    # Wait 10 seconds before element can be located on the page
    # For example, <div class="example"> -- first div with class "example"
    WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, ".//div[@class='example'][1]")))
except Exception as e:
    # Catch an exception in case of element unavailability
    print ("Page load error: {}".format(e.message))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...