代码之家  ›  专栏  ›  技术社区  ›  Hawlett

通过Android API上的Appium功能更改语言<=23

  •  0
  • Hawlett  · 技术社区  · 7 年前

    我正在使用Appium在Android设备上编写自动测试。我需要设置不同的语言并使用 语言 场所 功能,并按如下方式进行设置:

    capabilities["language"] = "sv"
    capabilities["locale"] = "SE"
    

    它在Android模拟器(V6.0/API 23、v7.1.1/API 25)上运行良好。它适用于OS 7.0(API 24)及更高版本的不同实际设备。 它不适用于API 23及更低版本的实际设备 。我总是收到一个错误:

    硒。常见的例外情况。WebDriverException:消息:未知 处理命令时发生服务器端错误。起初的 错误:无法设置语言:sv和国家/地区:SE

    我尝试了不同的组合,如sv\U SE sv SE上的语言环境设置等,但没有任何帮助。

    日志:

    [Appium] Creating new AndroidDriver (v1.37.0) session
    [Appium] Capabilities:
    [Appium]   app: [...]
    [Appium]   language: sv
    [Appium]   locale: SE
    [Appium]   appWaitActivity: [...] 
    [Appium]   deviceName: [...]
    [Appium]   platformVersion: 5.0.1
    [Appium]   platformName: Android 
    [BaseDriver] Session created with session id: df43e233-b4fe-47e8-8d27-c8c7eff12a69
    [AndroidDriver] Getting Java version
    [AndroidDriver] Java version is: 1.8.0_161
    [ADB] Checking whether adb is present
    [AndroidDriver] Retrieving device list
    [ADB] Trying to find a connected android device
    [ADB] Getting connected devices...
    [ADB] 1 device(s) connected
    [AndroidDriver] Looking for a device with Android '5.0.1'
    [ADB] Setting device id to 6bfdb679
    [ADB] Getting device platform version
    [ADB] Getting connected devices...
    [ADB] 1 device(s) connected
    [ADB] Running 'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","6bfdb679","shell","getprop","ro.build.version.release"]
    [ADB] Current device property 'ro.build.version.release': 5.0.1
    [AndroidDriver] Using device: 6bfdb679
    [ADB] Checking whether adb is present
    [ADB] Setting device id to 6bfdb679
    [BaseDriver] Using local app [...]
    [AndroidDriver] Checking whether app is actually present
    [AndroidDriver] Starting Android session
    [ADB] Running 'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","6bfdb679","wait-for-device"]
    [ADB] Getting connected devices...
    [ADB] 1 device(s) connected
    [ADB] Running 'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","6bfdb679","shell","echo","ping"]
    [ADB] Getting connected devices...
    [ADB] 1 device(s) connected
    [ADB] Running 'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","6bfdb679","shell","getprop","ro.build.version.sdk"]
    [ADB] Current device property 'ro.build.version.sdk': 21
    [ADB] Device API level: 21
    [ADB] Device API level: 21
    [ADB] Getting connected devices...
    [ADB] 1 device(s) connected
    [ADB] Running 'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","6bfdb679","shell","getprop","persist.sys.language"]
    [ADB] Current device property 'persist.sys.language': en
    [ADB] Getting connected devices...
    [ADB] 1 device(s) connected
    [ADB] Running 'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","6bfdb679","shell","getprop","persist.sys.country"]
    [ADB] Current device property 'persist.sys.country': GB
    [ADB] Device API level: 21
    [ADB] Setting device property 'persist.sys.language' to 'sv'
    [ADB] Getting connected devices...
    [ADB] 1 device(s) connected
    [ADB] Running 'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","6bfdb679","shell","setprop","persist.sys.language","sv"]
    [ADB] Device API level: 21
    [ADB] Setting device property 'persist.sys.country' to 'SE'
    [ADB] Getting connected devices...
    [ADB] 1 device(s) connected
    [ADB] Running 'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","6bfdb679","shell","setprop","persist.sys.country","SE"]
    [ADB] Rebooting the device in order to apply new locale via 'setting persist.sys.locale' command.
    [ADB] Getting connected devices...
    [ADB] 1 device(s) connected
    [ADB] Running 'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","6bfdb679","shell","stop"]
    [ADB] Device API level: 21
    [ADB] Setting device property 'sys.boot_completed' to '0'
    [ADB] Getting connected devices...
    [ADB] 1 device(s) connected
    [ADB] Running 'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","6bfdb679","shell","setprop","sys.boot_completed",0]
    [ADB] Getting connected devices...
    [ADB] 1 device(s) connected
    [ADB] Running 'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","6bfdb679","shell","start"]
    [ADB] Getting connected devices...
    [ADB] 1 device(s) connected
    [ADB] Running 'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","6bfdb679","shell","getprop","sys.boot_completed"]
    [ADB] Current device property 'sys.boot_completed': 1
    [ADB] Device API level: 21
    [ADB] Device API level: 21
    [ADB] Getting connected devices...
    [ADB] Unable to unroot adb daemon: 'Command ''C:\\Program Files (x86)\\Android\\android-sdk\\platform-tools\\adb.exe' unroot' exited with code 1'. Continuing
    [ADB] 1 device(s) connected
    [ADB] Running 'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","6bfdb679","shell","getprop","persist.sys.language"]
    [ADB] Current device property 'persist.sys.language': en
    [ADB] Getting connected devices...
    [ADB] 1 device(s) connected
    [ADB] Running 'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","6bfdb679","shell","getprop","persist.sys.country"]
    [ADB] Current device property 'persist.sys.country': GB
    [AndroidDriver] Shutting down Android driver
    [AndroidDriver] Called deleteSession but bootstrap wasn't active
    [ADB] Getting connected devices...
    [ADB] 1 device(s) connected
    [ADB] Running 'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","6bfdb679","shell","am","force-stop","io.appium.unlock"]
    [AndroidDriver] Not cleaning generated files. Add `clearSystemFiles` capability if wanted.
    [MJSONWP] Encountered internal error running command: Error: Failed to set language: sv and country: SE
    

    如何使用Appium更改较低API版本上的设备语言?

    2 回复  |  直到 7 年前
        1
  •  2
  •   dmle    7 年前

    根据,它不支持实际设备 official Appium docs

    语言 (仅限Sim/Emu)为模拟器/仿真器设置的语言。在Android上,仅在API级别22及以下可用

    示例:fr

    场所 (仅限Sim/Emu)要为模拟器/仿真器设置的区域设置。

    示例:fr\u CA

    它可能开始适用于一些运行OS 7+的真实设备,但这更像是谷歌的奖金,很肯定它不会适用于所有设备。

        2
  •  0
  •   superuser    6 年前

    怎么样 https://github.com/appium/io.appium.settings ? 抱歉,我没有尝试,但它似乎支持在没有API级别限制的情况下更改区域设置。