URL черного списка с BrowserMobProxy в Robot Framework / Selenium? - PullRequest
0 голосов
/ 08 октября 2018

Я использую RobotFramework с библиотекой Selenium для написания автоматизированных тестов для различных веб-сайтов.Я столкнулся с проблемой, когда из-за медленной загрузки сторонних URL-адресов некоторые страницы загружаются вечно, и я хочу заблокировать их, чтобы ускорить выполнение теста.

Однако я застрял на реализации этого решения через BrowserMob в Robot Framework.Кто-нибудь может помочь?

Пока у меня есть этот код:

Start Browser
    ## Init BrowserMob Proxy
    ${BMPATH}    Join Path    ${EXECDIR}    browsermob-proxy-2.1.4    bin    browsermob-proxy.bat
    &{bmphost}    Create Dictionary    address=127.0.0.1    port=7070
    Start Local Server    ${BMPATH}
    # Create dedicated proxy on BrowserMob Proxy
    &{host}    Create Dictionary    address=127.0.0.1    port=7070
    ${BrowserMob_Proxy}=    Create Proxy    ${host}
    #Blacklist URLS
    Blacklist    https://.*\\.google.com/.*    404
    ## Configure Webdriver to use BrowserMob Proxy
    ${options}=    Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
    Call Method    ${options}    add_argument    --proxy\=127.0.0.1:7070
    #${proxy1}=    Evaluate    sys.modules['selenium.webdriver'].Proxy()    sys, selenium.webdriver
    #${proxy1.http_proxy}=    Set Variable    localhost:8888
    Create WebDriver    Chrome    chrome_options=${options}    #proxy=${BrowserMob_Proxy}
    Go to    https://www.google.com

Цель состояла в том, чтобы перевести этот код селена / Java:

private WebDriver initializeDriver() throws Exception {
    // Start the server and get the selenium proxy object
    ProxyServer server = new ProxyServer(proxy_port);  // package net.lightbody.bmp.proxy

    server.start();
    server.setCaptureHeaders(true);
    // Blacklist google analytics
    server.blacklistRequests("https?://.*\\.google-analytics\\.com/.*", 410);
    // Or whitelist what you need
    server.whitelistRequests("https?://*.*.yoursite.com/.*. https://*.*.someOtherYourSite.*".split(","), 200);

    Proxy proxy = server.seleniumProxy(); // Proxy is package org.openqa.selenium.Proxy

    // configure it as a desired capability
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(CapabilityType.PROXY, proxy);

    // start the driver   ;
    Webdriver driver = new FirefoxDriver(capabilities);

    return driver;

Код, который у меня есть, создает сервер, прокси-сервер и открывает браузер Chrome, но не может внести черный список в google.com и в любом случае открывает страницу.Перепробовал несколько выражений регулярных выражений, все не удалось, но я думаю, что ошибка была сделана где-то до этого, либо в способе создания прокси / сервера или в черный список URL-адреса не правильно.

Кто-нибудь имел успех в реализацииэто решение в РФ?Может кто-нибудь сказать мне, что мне не хватает?

Спасибо

1 Ответ

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

Для тех, кому это может понадобиться, решение приведено ниже:

Start Browser
    [Documentation]    Start browser
    Set Selenium Implicit Wait    10
    ${BMPATH}    Join Path    ${EXECDIR}    browsermob-proxy-2.1.4    bin    browsermob-proxy.bat
    Start Local Server    ${BMPATH}
    ## Create dedicated proxy on BrowserMob Proxy
    &{host}    Create Dictionary    port=7070  
    ${BrowserMob_Proxy}=    Create Proxy    ${host}
    Blacklist    .*\/\/.*google.*    200
    ## Configure Webdriver to use BrowserMob Proxy
    ${options}=    Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
    Call Method    ${options}    add_argument    --start-maximized
    Call Method    ${options}    add_argument    --proxy-server\=localhost:7070
    Create WebDriver    Chrome    chrome_options=${options}

Это позволит развернуть браузер Chrome и развернуть трафик через BMP.Регулярное выражение в строке черного списка означает, что оно заблокирует все URL, содержащие «google», и вернет статус 200 (это можно изменить по вашему желанию).

...