我无法创建BMP来捕获在Sauce实验室中运行的Java测试的流量。有没有人成功完成这项任务?
这是我的例子:
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时,测试实际上会运行,但不会捕获任何流量。
e.g。
RemoteWebDriver rd = new RemoteWebDriver(new URL(MessageFormat.format("http://{0}:{1}@ondemand.saucelabs.com:80/wd/hub", sauceUserName, sauceAccessKey)),
caps);
答案 0 :(得分: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();
答案 1 :(得分: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();
}