【问题标题】:Enable Chromedriver’s performance logging (Chrome and webview only) in Appium在 Appium 中启用 Chromedriver 的性能日志记录(仅限 Chrome 和 webview)
【发布时间】: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


    【解决方案1】:
    desired_caps = {}
    desired_caps['platformName'] = 'Android'
    desired_caps['enablePerformanceLogging'] = True
    driver = webdriver.Remote('http://localhost:9999/wd/hub', desired_caps)
    

    【讨论】:

    • 你需要解释你的代码是做什么的。这将对正在查看您的答案的用户有所帮助
    猜你喜欢
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 2022-06-28
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    相关资源
    最近更新 更多