Я использую 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
Selenium.webdriver.Firefox загрузил и отобразил контент, но страница все еще загружает фоновый контент ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как спроектировать эту структуру в HTML и CSS, которую я отобразил на изображении [закрыто]
Anonymous » » в форуме Html - 0 Ответы
- 29 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как спроектировать эту структуру в HTML и CSS, которую я отобразил на изображении [закрыто]
Anonymous » » в форуме CSS - 0 Ответы
- 31 Просмотры
-
Последнее сообщение Anonymous
-