Не найдено записей журнала для BrowserMobProxy с Robot Framework

Я написал этот скрипт на фреймворке робота.

Set Selenium Implicit Wait    10
## Init BrowserMob Proxy
${file}    Join Path    ${EXECDIR}    browsermob-proxy-2.1.4    bin    browsermob-proxy.bat
File Should Exist    ${file}
Start Local Server    ${file}

# Create dedicated proxy on BrowserMob Proxy
${BrowserMob_Proxy}=    Create Proxy

# Configure Webdriver to use BrowserMob Proxy
${options}=    Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
Call Method    ${options}    add_argument      --proxy\=${BrowserMob_Proxy}
Create WebDriver    Chrome    chrome_options=${options}

New Har    google
Go To    ${PAGE_URL}
Title Should Be    Google
${har}=     Get Har As Json
Create File     ${EXECDIR}${/}file.har     ${har}

Close All Browsers
Stop Local Server

Но когда я пытаюсь выполнить проверку с помощью анализатора HAR, он возвращает ошибку, говоря, что в файле не найдено записей журнала.

При обработке файла HAR обнаружены ошибки: в файле не найдено записей журнала.

Результат хар:

{"log": {"comment": "", "entries": [], "version": "1.2", "pages": [{"pageTimings": {"comment": ""}, "comment": "", "title": "google", "id": "google", "startedDateTime": "2017-03-23T10:26:27.317+08:00"}], "creator": {"comment": "", "version": "2.1.4", "name": "BrowserMob Proxy"}}}

person wan mohd payed    schedule 23.03.2017    source источник
comment
Браузерная часть работает? Т.е. Страница Google успешно загружена? Google доступен только через прокси или возможно прямое соединение?   -  person A. Kootstra    schedule 23.03.2017
comment
Браузер успешно завершил работу и может получить доступ к Google. Оба могут получить доступ к Google.   -  person wan mohd payed    schedule 23.03.2017
comment
если я попытаюсь использовать --proxy-server, я не смогу получить доступ к странице.   -  person wan mohd payed    schedule 23.03.2017


Ответы (1)


Из описания ясно, что URL-адрес, который вы пытаетесь достичь, доступен как с прокси-сервером, так и без него. Назначение прокси - сервер как средство записи / управления трафиком между браузером и местом назначения.

Приведенный ниже пример кода был протестирован и подтвержден для работы. Это вариант, описанный в этом сообщении stackoverflow. Единственная разница, которую я вижу в вашем примере, - это --proxy, который должен быть --proxy-server

Open Chrome Using Create WebDriver Keyword
        ${options}=    Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
        Call Method    ${options}    add_argument    --proxy-server\=localhost:8080
        Create WebDriver    Chrome    chrome_options=${options}
        Go To    https://stackoverflow.com

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

&{port}    Create Dictionary    port=8084
${BrowserMob_Proxy}=    Create Proxy    ${port}

Зная, что прокси-сервер работает на том же хосте, что и BrowserMob, и известен порт прокси, теперь можно указать ChromeOptions:

Call Method    ${options}    add_argument    --proxy-server\=localhost:8084

Затем это можно объединить с кодом, генерирующим HAR.

person A. Kootstra    schedule 23.03.2017
comment
Спасибо за ваш ответ . Я пробовал с этим вариантом, но он возвращает ошибку на chrome. This site can’t be reached The webpage at https://stackoverflow.com/ might be temporarily down or it may have moved permanently to a new web address. ERR_TUNNEL_CONNECTION_FAILED - person wan mohd payed; 23.03.2017
comment
Вы проверили, что прокси-сервер работает при настройке непосредственно в вашем браузере? - person A. Kootstra; 23.03.2017
comment
достичь этой ошибкиThis site can’t be reached The webpage at http://localhost:8080/ might be temporarily down or it may have moved permanently to a new web address. ERR_NO_SUPPORTED_PROXIES - person wan mohd payed; 23.03.2017
comment
Адрес localhost - это адрес моего собственного прокси. В вашем примере это должно быть ${BrowserMob_Proxy}. Вы должны изменить только имя параметра на --proxy-server с акцентом на часть -server, которая отсутствует в вашем собственном примере. - person A. Kootstra; 23.03.2017
comment
Похоже, порт настроен неправильно. - person wan mohd payed; 23.03.2017
comment
Если это решит вашу проблему, можете ли вы отметить ответ как ответ? - person A. Kootstra; 23.03.2017
comment
Проблема все еще не решена. все еще выясняя, как сгенерировать порт. - person wan mohd payed; 23.03.2017
comment
Давайте продолжим это обсуждение в чате. - person A. Kootstra; 24.03.2017