【发布时间】:2017-07-23 17:41:40
【问题描述】:
使用 Appium(AndroidDriver) 从 LogType 获取性能日志,产生异常。 如果您使用通用 RemoteWebDriver/ChromeDriver 对象,则会生成性能日志。而 Appium 还提供了“enablePerformanceLogging”标志来捕获 Android webview 的性能日志。但也启用此标志后,不会捕获性能日志。
以下代码使用 RemoteWebDriver/Chrome 生成性能日志:
DesiredCapabilities caps = DesiredCapabilities.chrome();
if (null != androidPackage) {
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("androidPackage", androidPackage);
caps.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
}
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.BROWSER, Level.ALL);
logPrefs.enable(LogType.PERFORMANCE, Level.INFO);
caps.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
ChromeDriverService service = new ChromeDriverService.Builder()
.usingDriverExecutable(new File("/Users/abc/Desktop/driver/chromedriver"))
.usingAnyFreePort()
.build();
service.start();
driver = new RemoteWebDriver(service.getUrl(),
caps);
检查可用的日志类型:
Logs logs = driver.manage().logs();
System.out.println("Log types: " + logs.getAvailableLogTypes());
O/P:
Log types: [performance, browser, driver, client]
不生成性能日志,使用 AndroidDriver(Appium):
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("browsername","chrome");
capabilities.setCapability("device","android");
capabilities.setCapability("deviceName","AndroidEmulator");
capabilities.setCapability("platformversion","5.1");
capabilities.setCapability("platformname","Android");
capabilities.setCapability("appPackage","com.android.chrome");
capabilities.setCapability("appActivity","com.google.android.apps.chrome.Main");
// Enabling LoggingPreferences
capabilities.setCapability("enablePerformanceLogging",true);
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.INFO);
capabilities.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
driver = new AndroidDriver(new URL("http://127.0.0.0:4723/wd/hub"), capabilities);
检查可用的日志类型:
Logs logs = driver.manage().logs();
System.out.println("Log types: " + logs.getAvailableLogTypes());
O/P:
Log types: [logcat, client]
执行下一行导致异常,因为性能日志类型不可用:
List<LogEntry> entries = driverObj.manage().logs().get(LogType.PERFORMANCE).getAll();
抛出异常:
org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Unsupported log type performance. Supported types are {"logcat":"Logs for Android applications on real device and emulators via ADB"}
帮助我使用 Appium 获取/启用 android webviews 的性能。
【问题讨论】:
标签: performance logging selenium-webdriver appium selenium-chromedriver