Обработка страниц без заголовка с помощью Selenium / Python - PullRequest
0 голосов
/ 05 февраля 2019

У меня возникла проблема при попытке получить доступ к некоторым URL-адресам, они случайно не загружаются, а в заголовке страницы отображается «Нет заголовка» в браузере и ничего не отображается в print () и при правильной загрузке онинужно освежить.

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

def no_title():
    sleep(3)
    if not driver.title:
        print('Sem Titulo')
        driver.refresh()
        sleep(2)
    else:
        pass

def no_title():
    sleep(3)
    if driver.execute_script("return document.documentElement.outerHTML") == '<html><head></head><body></body></html>':
        print('Sem Titulo')
        driver.refresh()
        sleep(2)
    else:
        pass

def no_title():
    sleep(3)
    if driver.title == 'Sem título':
        print('Sem Titulo')
        driver.refresh()
        sleep(2)
    else:
        pass

Так как я довольномного в тупике, надеюсь, кто-то может помочь!Заранее спасибо.

Редактировать: Вот изображение того, что показано на браузере / тестовой странице: https://i.imgur.com/s9zMtRK.png

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

После того, как куча испытаний наконец-то закончилась решением проблемы, это была проблема с используемым браузером, так как я тестировал множество версий chrome и драйвера.

Работавший браузер былOpera / operadriver, а вот функция, которая фактически работала с обработкой без заголовка, когда это произошло с Opera:

def no_title():
    sleep(2)
    doc_request = driver.execute_script("return document.documentElement.outerHTML")
    if doc_request == '<html><head></head><body></body></html>':
        driver.refresh()
        sleep(2)
    else:
        pass
0 голосов
/ 05 февраля 2019

Сначала получите заголовок страницы, а затем сохраните его в некоторой переменной, как показано ниже:

someTitle = str(driver.title)

Затем strip () it, strip () удалит начальные, конечные пробелы и проверит пустые кавычки илиНичего подобного ниже:

if someTitle.strip()=='' or someTitle.strip()==None:

Ваш обновленный метод ниже, который будет идентифицировать страницы без заголовка:

def no_title():
    sleep(3)
    someTitle = str(driver.title)
    if someTitle.strip()=='' or someTitle.strip()==None:
        print('Sem Titulo')
        driver.refresh()
        sleep(2)
    else:
        pass

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

def no_title():
    sleep(3)
    someTitle = str(driver.title)
    if someTitle.strip()=='' or someTitle.strip()==None:
        print('Sem Titulo')
        currentURL = driver.current_url
        print(currentURL)
        driver.get(currentURL)
        sleep(2)
    else:
        pass

Если у вас открыто несколько окон / вкладок, вам нужно переключиться на конкретную вкладку, чтобы обновить ее с помощью дескрипторов окон, попробуйте следующий код:

def no_title():
    sleep(3)
    someTitle = str(driver.title)
    if someTitle.strip()=='' or someTitle.strip()==None:
        print('Sem Titulo')
        current = driver.current_window_handle
        handles = driver.window_handles
        for handle in handles:
            if handle != current:
                driver.switch_to_window(handle)
                driver.refresh()
        driver.switch_to_window(current)
        sleep(2)
    else:
        pass

Или вы можете попробовать ниже:

def no_title():
    sleep(3)
    print('Sem Titulo')
    current = driver.current_window_handle
    handles = driver.window_handles
    for handle in handles:
        driver.switch_to_window(handle)
        someTitle = str(driver.title)
        if someTitle.strip()=='' or someTitle.strip()==None:
            driver.refresh()
    driver.switch_to_window(current)
    sleep(2)
else:
    pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...