Поиск элемента с помощью Selenium на Python - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь автоматизировать нажатие кнопки «Далее» на онлайн-лекции моего университета, когда заканчивается текущий слайд, так как от пользователя требуется вручную нажимать «Далее», когда слайд заканчивается.

Использование селена сpython, ему удалось получить доступ к веб-странице, войти в систему и перейти к слайдам лекции, но я не могу продвинуться дальше

Элемент HTML на pastebin пытается ввести элемент в строке 3397

Я пытаюсь получить elapsedTime / totalTime и

while ( currentSlide != totalSlide )
    if elapsedTime == totalTime
        find and click on 'next'

Я пытался:

duration = driver.find_element(By.XPATH,"//div[@class='label time'][@style='display: none;]")
duration = driver.find_element(By.XPATH,"//div[@class='.label.time'][@style='display: none;']")

Любая помощь будет оценена!

РЕДАКТИРОВАТЬ:

Получил работу, предложенную Лукасом

content = urllib.request.urlopen(URL, timeout=10).read().decode("utf-8") duration = content.split("<div class="label time" style="display: none;">")[1].split("</div>")[0]

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вы пытались использовать нормальный парсер вместо селена?Проверьте это:

content = urllib.request.urlopen(URL, timeout=10).read().decode("utf-8")
duration = content.split("<div class="label time" style="display: none;">")[1].split("</div>")[0]
0 голосов
/ 10 октября 2018

я бы попробовал:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC    

browser = webdriver.Firefox()

browser.get(URL)
delay = 30  # seconds
WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.CLASS_NAME, 'label time')))
print("Page is ready!")
# duration = browser.find_element_by_class("label time").text
# --> "InvalidSelectorException: Message: invalid selector: Compound class names not permitted"
duration = browser.find_element_by_css_selector(".label.time").text

# alternative:
duration = driver.find_element_by_xpath("//*[@class='label time']").text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...