Настройте browsermobproxy для успешной работы с лабораториями appium и соуса.

Я не могу создать BMP для захвата трафика из моих тестов Java, выполняемых в лабораториях Sauce. Кто-нибудь когда-нибудь успешно выполнил это задание?

Вот мой примерный код:

    public class AppiumTestBase {

    BrowserMobProxy proxy;

    public RemoteWebDriver createSauceDriver() throws Exception {
    String sauceUserName = "userName";
    String sauceAccessKey = "myKey";

    proxy = new BrowserMobProxyServer();
    proxy.start();

    int port = proxy.getPort();


    DesiredCapabilities caps = DesiredCapabilities.android();
    caps.setCapability("deviceName", "Android Emulator");
    caps.setCapability("deviceType", "phone");
    caps.setCapability("deviceOrientation", "portrait");
    caps.setCapability("browserName", "");
    caps.setCapability("platformVersion", "5.1");
    caps.setCapability("platformName", "Android");
    caps.setCapability("app", "sauce-storage:app.zip");
    caps.setCapability("app-package", "myPackage");
    caps.setCapability("app-activity", "myOpenActivity");

    //get/set test name
    StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
    caps.setCapability("name", stackTrace[2].getMethodName());


    RemoteWebDriver rd = new RemoteWebDriver(new URL(MessageFormat.format("http://{0}:{1}@ondemand.saucelabs.com:"+port+"/wd/hub", sauceUserName, sauceAccessKey)),
            caps);

    return rd;
}

@Test
public void sauceIt() throws Exception {

    RemoteWebDriver d = createSauceDriver();

    proxy.newHar("New HAR");

    d.findElement(By.id("main_button")).click();

    Thread.sleep(4000);
    Har h = proxy.getHar();
    File f = new File("/Users/me/Desktop/sauceExample");
    h.writeTo(f);

    d.quit();

}

org.openqa.selenium.remote.UnreachableBrowserException: не удалось начать новый сеанс. Возможные причины: неверный адрес удаленного сервера или сбой при запуске браузера.

Тест фактически запустится, когда я запущу RemoteWebDriver через порт 80, но не будет захватывать трафик.

e.g.

     RemoteWebDriver rd = new RemoteWebDriver(new URL(MessageFormat.format("http://{0}:{1}@ondemand.saucelabs.com:80/wd/hub", sauceUserName, sauceAccessKey)),
            caps);

person Zach David    schedule 21.06.2016    source источник


Ответы (1)


На случай, если кто столкнется с этим в поисках ответа - надо запустить соус коннект через BMP и потом через API обращаться к прокси

@Test
public void sauceIt() throws Exception {

    RemoteWebDriver d = createSauceDriver();

    //start new har
    put("http://localhost:9000/proxy/9091/har");

    d.findElement(By.id("menu_footer")).click();

    Response har = get("http://localhost:9000/proxy/9091/har");
    String harStr = har.asString();
    System.out.println(harStr);

    d.quit();
person Zach David    schedule 28.06.2016
comment
Привет, я смотрю на этот пример и думаю, что это значит: //запустить новый har put(localhost: 9000/прокси/9091/хар); Это д.пут? Также у вас есть соусконнект и bmp, работающие в вашей консоли? Спасибо - person Aqua267; 19.05.2017
comment
Здравствуйте - это не так. «d» — это экземпляр удаленного веб-драйвера (мобильного приложения), где PUT — это HTTP-запрос к прокси-серверу, который запускает запись har. Пожалуйста, дайте мне знать, если я могу уточнить - person Zach David; 23.05.2017
comment
Спасибо. Я все еще ищу помощи. Вы запускаете соединение соуса через порт 443? http://{0}:{1}@ondemand.saucelabs.com:+port+/wd/hub или 9091? - person Aqua267; 16.06.2017
comment
Я вставил свой код в комментарий выше. Мой вопрос: 1) в каком порту вы запускали моб-прокси браузера? скажем 9090 или 9091?? 2) какой порт # передавать при запуске прокси-сервера соуса. Его значение по умолчанию — 443. 3) У вас что-то отдельно запускается в консоли или все запускается с помощью java-кода? - person Aqua267; 16.06.2017
comment
Извините за много вопросов, как мне получить ответ har, например, я использую этот вызов, когда запускаю BMP в консоли curl -X GET localhost:9090/proxy/9091/har, но теперь я не могу понять, какой порт использовать для захвата сетевого трафика - person Aqua267; 16.06.2017