设置Browsermobproxy,通过Appium和Sauce Labs成功运行



我无法创建一个BMP来捕获我在酱汁实验室中运行的Java测试的流量。有人成功完成了这项任务吗?

这是我的Exmaple代码:

    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:无法启动新的会话。可能的原因是远程服务器或浏览器启动失败的无效地址。

当我在端口80上启动remotewebdriver时,测试实际上将运行,但不会捕获任何流量。

例如。

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

如果有人遇到此问题以寻找答案 - 您必须通过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();
`public RemoteWebDriver createSauceDriver() throws Exception {
    String sauceUserName = "uname";
    String sauceAccessKey = "key";
    proxy = new BrowserMobProxyServer();
    proxy.start(9091);
    int port = proxy.getPort();
    System.out.println("bmp listening on port is " + port);
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("platformName", "iOS");
    capabilities.setCapability("deviceName", "iPhone 7");
    capabilities.setCapability("platformVersion", "10.2");
    capabilities.setCapability("app", "sauce-storage:TestApp.app.zip");
    capabilities.setCapability("browserName", "");
    capabilities.setCapability("deviceOrientation", "portrait");
    capabilities.setCapability("autoAcceptAlerts", true);
    capabilities.setCapability("appiumVersion", "1.6.3");
    capabilities.setCapability("name", "SDK_Sauce");
    RemoteWebDriver rd = new RemoteWebDriver(new URL(SauceConnectProxy.URL), capabilities);
    return rd;
  }
  @Test
  public void sauceIt() throws Exception {
    RemoteWebDriver d = createSauceDriver();
    sdkDemoApp = new iOSSdkDemoAppPage(d);
    //start new har
    SauceConnectProxy.SavePutCall();
    demoApp.click();
    demoApp.rotate();
    String response = SauceConnectProxy.SaveGetCall();
    System.out.println(response);
    d.quit();
  }

相关内容

  • 没有找到相关文章

最新更新