2016-06-21 3 views
0

소스 랩에서 실행중인 Java 테스트에서 트래픽을 캡처 할 수있는 BMP를 만들 수 없습니다. 누구든지이 작업을 성공적으로 완료 했습니까?appium 및 소스 랩에서 성공적으로 실행되도록 browsermobproxy 설정

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 :

여기 내 exmaple 코드 새로운 세션을 시작할 수 없습니다. 가능한 원인은 원격 서버의 잘못된 주소 또는 브라우저 시작 실패입니다.

테스트는 포트 80에서 RemoteWebDriver를 시작할 때 실제로 실행되지만 트래픽을 캡처하지는 않습니다.

사람이 답변에 대한 검색이 건너 오는 경우

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

답변

0

가 - 당신은 소스가 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(); 
+0

안녕을 통해 프록시 액세스 시작해야, 내가 찾고 있어요 이 예제에서 이것이 무엇을 의미하는지 궁금합니다 : // new har har start put ("http : // localhost : 9000/proxy/9091/har"); 그것은 d.put입니까? 또한 콘솔에 sauceconnect와 bmp가 실행 중입니까? 감사합니다 – Aqua267

+0

안녕하세요 - 그렇지 않습니다. 'd'는 원격 웹 드라이버 (모바일 앱)의 인스턴스이며 PUT은 프록시에 대한 HTTP 요청으로 "녹음"을 시작합니다. 고맙습니다. –

+0

감사합니다. 나는 아직도 도움을 찾고있다. 포트 443에 시작 소스가 연결되어 있습니까? http : // {0} : {1} @ ondemand.saucelabs.com : "+ port +"/ wd/hub 또는 9091? – Aqua267

0
`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(); 

    }