zoukankan      html  css  js  c++  java
  • appium(4)-Automating mobile web apps

    Automating mobile web apps

    If you’re interested in automating your web app in Mobile Safari on iOS or Chrome on Android, Appium can help you. Basically, you write a normal WebDriver test, and use Appium as the Selenium server with a special set of desired capabilities.//iOS用Safari浏览器,安卓用Chrome浏览器。

     

    Mobile Safari on Simulator

    First of all, make sure developer mode is turned on in your Safari preferences so that the remote debugger port is open.//使用发开着模式。

    If you are using the simulator or a real device, you MUST run Safari before attempting to use Appium.

    Then, use desired capabilities like these to run your test in mobile Safari:

    1 // java
    2 DesiredCapabilities capabilities = new DesiredCapabilities();
    3 capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
    4 capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "7.1");
    5 capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");
    6 capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone Simulator");
     

    Mobile Safari on a Real iOS Device

    We use the SafariLauncher App to launch Safari and run tests against mobile Safari. Once Safari has been launched the Remote Debugger automatically connects using the ios-webkit-debug-proxy. When working with ios-webkit-debug-proxy, you have to trust the machine before you can can run tests against your iOS device.//实体机需要使用代理和额外的app。

    For instruction on how to install and run ios-webkit-debugger-proxy see iOS webKit debug proxy documentation.

     

    Setup

    Before you can run your tests against Safari on a real device you will need to:

    • Have the ios-webkit-debug-proxy installed, running and listening on port 27753 (see the hybrid docs for instructions)
    • Turn on web inspector on iOS device (settings > safari > advanced)
    • Create a provisioning profile that can be used to deploy the SafariLauncherApp.

    To create a profile for the launcher go into the Apple Developers Member Center and:

    • Step 1: Create a new App Id and select the WildCard App ID option and set it to “*”
    • Step 2: Create a new Development Profile and for App Id select the one created in step 1.
    • Step 3: Select your certificate(s) and device(s) and click next.
    • Step 4: Set the profile name and generate the profile.
    • Step 5: Download the profile and open it with a text editor.
    • Step 6: Search for the UUID and the string for it is your identity code.

    Now simply include your UDID and device name in your desired capabilities:

    { "udid": '...', "deviceName": '...', "browserName": "Safari" }

     

    Running your test

    To configure you test to run against safari simply set the “browserName” to be “Safari”.

     

    Java Example

     1 // java
     2 //setup the web driver and launch the webview app.
     3 DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
     4 desiredCapabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");
     5 URL url = new URL("http://127.0.0.1:4723/wd/hub");
     6 AppiumDriver driver = new AppiumDriver(url, desiredCapabilities);
     7 
     8 // Navigate to the page and interact with the elements on the guinea-pig page using id.
     9 driver.get("http://saucelabs.com/test/guinea-pig");
    10 WebElement div = driver.findElement(By.id("i_am_an_id"));
    11 Assert.assertEquals("I am a div", div.getText()); //check the text retrieved matches expected value
    12 driver.findElement(By.id("comments")).sendKeys("My comment"); //populate the comments field by id.
    13 
    14 //close the app.
    15 driver.quit();
     

    Python Example

     1 # python
     2 # setup the web driver and launch the webview app.
     3 capabilities = { 'browserName': 'Safari' }
     4 driver = webdriver.Remote('http://localhost:4723/wd/hub', capabilities)
     5 
     6 # Navigate to the page and interact with the elements on the guinea-pig page using id.
     7 driver.get('http://saucelabs.com/test/guinea-pig');
     8 div = driver.find_element_by_id('i_am_an_id')
     9 # check the text retrieved matches expected value
    10 assertEqual('I am a div', div.text)
    11 
    12 # populate the comments field by id
    13 driver.find_element_by_id('comments').send_keys('My comment')
    14 
    15 # close the driver
    16 driver.quit()
     

    Mobile Chrome on Emulator or Real Device

    Pre-requisites:

    • Make sure Chrome (an app with the package com.android.chrome) is installed on your device or emulator. Getting Chrome for the x86 version of the emulator is not currently possible without building Chromium, so you may want to run an ARM emulator and then copy a Chrome APK from a real device to get Chrome on an emulator.//仿真器必须要用ARM,然后装一个Chrome apk。
    • If downloaded from NPM, or running from the .app, nothing needs to be done. If running from source, npm install will download ChromeDriver and put it in node_modules/appium-chromedriver/chromedriver/<OS name>/ for users having npm v3+ and for npm v2 it will be in node_modules/appium-android-driver/node_modules/appium-chromedriver/chromedriver/<OS name>/. A particular version can be specified by passing the --chromedriver_version config property (e.g., npm install appium --chromedriver_version="2.16"), otherwise the most recent one will be retrieved.//如果从源码安装appium,那么需要把chrome driver放到特定路径下。

    Then, use desired capabilities like these to run your test in Chrome:

    1 // java
    2 DesiredCapabilities capabilities = new DesiredCapabilities();
    3 capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
    4 capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
    5 capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
    6 capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome");

    Note that on 4.4+ devices, you can also use the 'Browser’ browserName cap to automate the built-in browser. On all devices you can use the 'Chromium’ browserName cap to automate a build of Chromium.//在安卓系统版本4.4+的设备上,使用“Browser”这个browserName可以驱动内置浏览器,使用“Chromium”这个browserName可以驱动Chromium浏览器。

    Troubleshooting chromedriver

    As of Chrome version 33, a rooted device is no longer required. If running tests on older versions of Chrome, devices needed to be rooted as ChromeDriver required write access to the /data/local directory to set Chrome’s command line arguments.//使用版本号33及其以上的Chrome浏览器,设备不需要root权限。

    If testing on Chrome app prior to version 33, ensure adb shell has read/write access to /data/local directory on the device://使用版本号33及其以上的Chrome浏览器时,adb shell需要有权限访问/data/local目录。

    $ adb shell su -c chmod 777 /data/local

    For more chromedriver specific documentation see ChromeDriver documentation.

  • 相关阅读:
    APP开发关于缓存
    SlidingMenu+Fragment实现当前最流行的侧滑
    深入理解dp px density
    HDU1847--Good Luck in CET-4 Everybody!(SG函数)
    【转】博弈论——acm
    HDU1846--Brave Game(巴什博弈)
    HDU2179--pi(麦金公式)
    HDU1026--Ignatius and the Princess I(BFS记录路径)
    HDU1237--简单计算器(栈的应用)
    HDU3398—String-(组合数)
  • 原文地址:https://www.cnblogs.com/superbaby11/p/6061141.html
Copyright © 2011-2022 走看看