Selenium.webdriver.Firefox загрузил и отобразил контент, но страница все еще загружает фоновый контентPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Selenium.webdriver.Firefox загрузил и отобразил контент, но страница все еще загружает фоновый контент

Сообщение Anonymous »

Я использую Selenium для переименования и сортировки носителя в папке на основе заголовка страницы, но страница по-прежнему загружает контент в фоновом режиме, и заголовок страницы меняется после того, как Firefox завершил загрузку и отображение содержание.
Каждый раз, когда я нажимаю на эпизод документального сериала, который не является первым эпизодом в сериале, возникает эта проблема. Он возвращает название эпизода, а не название сериала, но после того, как фоновое содержимое завершило загрузку заголовка браузера и текста тега html, я после изменения названия сериала, чего я и хочу.< img alt="введите описание изображения здесь" src="https://i.sstatic.net/cwxz1cbg.png" />
Я искал в Google, а также искал здесь на stackoverflow.com в течение нескольких дней. Я просмотрел почти каждую часть модуля селена, пробуя разные вещи, плюс я просмотрел каждую часть веб-страницы в надежде найти что-то, что я могу использовать, чтобы заставить селен дождаться завершения загрузки контента, но безуспешно. .
Кроме того, в ответе на другой вопрос было рекомендовано использовать WebDriverWait с ожидаемыми_условиями и стараться избегать time.sleep с селеном , и я это понимаю. Даже при высокоскоростном подключении к Интернету существует ряд факторов, которые могут замедлить загрузку веб-страницы.
Я начал с самого заголовка, используя...
import selenium.webdriver.support.expected_conditions as ec
from selenium.webdriver.support.wait import WebDriverWait

browser = Firefox()
wait = WebDriverWait(driver = browser, timeout = 30)

browser.get('https://curiositystream.com/video/3558')
wait.until_not(ec.title_is(current_title))

На данный момент я с этим согласен. Это происходит не так часто, но проблема все еще существует.
print(wait.until(
ec.visibility_of_element_located((
'xpath',
'//button[@aria-expanded="false" and @class="inline-block cursor-pointer"]'
'/span[@class="leading-tight text-lg tablet:text-2xl font-normal" and contains(@aria-label,"Show")]'
))).text, end = ' ')

if len(browser.find_elements(
by = 'xpath',
value = '//div[@class="pt-4"]/p[@class="font-medium text-light pt-2"]'
)) > 0:
print('(Docuseries)')
else:
print('(Documentary)')


Это не настоящий источник того, что я написал, но он может воспроизвести мою проблему.
from contextlib import suppress
from os import getpid, kill
from re import compile
from signal import SIGTERM
from time import sleep # noqa

import selenium.common.exceptions as exc
import selenium.webdriver.support.expected_conditions as ec
from selenium.webdriver import Firefox
from selenium.webdriver.support.wait import WebDriverWait

# from library import Firefox

if __name__ == '__main__':
browser = Firefox()
wait = WebDriverWait(driver = browser, timeout = 30)

browser.set_window_rect(x = 960, y = 10, width = 1920, height = 1580)
browser.get('https://curiositystream.com/')

url = compile(r'https://curiositystream.com/video/[0-9]+')

# current_url = current_title = ''
current_url, current_title = browser.current_url, browser.title
try:
while True:
if current_url != browser.current_url:
current_url = browser.current_url

wait.until_not(ec.title_is(current_title))

if url.match(string = browser.current_url):
current_title = browser.title

if (button := next((_ for _ in browser.find_elements(
by = 'xpath',
value = '//button[@class="vjs-big-play-button" and '
'@type="button" and '
'@title="Play Video" and '
'@aria-disabled="false"]'
)), None)) is not None:
with suppress(
exc.StaleElementReferenceException,
exc.ElementNotInteractableException
):
button.click()

# sleep(wait.__dict__['_poll'])
print(wait.until(
ec.visibility_of_element_located((
'xpath',
'//button[@aria-expanded="false" and @class="inline-block cursor-pointer"]'
'/span[@class="leading-tight text-lg tablet:text-2xl font-normal" and contains(@aria-label,"Show")]'
))).text, end = ' ')

if len(browser.find_elements(
by = 'xpath',
value = '//div[@class="pt-4"]/p[@class="font-medium text-light pt-2"]'
)):
print('(Docuseries)')
else:
print('(Documentary)')
except exc.NoSuchWindowException:
kill(getpid(), SIGTERM)



Подробнее здесь: https://stackoverflow.com/questions/787 ... age-is-sti
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»