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:

// java
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "7.1");
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");
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

// java
//setup the web driver and launch the webview app.
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");
URL url = new URL("http://127.0.0.1:4723/wd/hub");
AppiumDriver driver = new AppiumDriver(url, desiredCapabilities);

// Navigate to the page and interact with the elements on the guinea-pig page using id.
driver.get("http://saucelabs.com/test/guinea-pig");
WebElement div = driver.findElement(By.id("i_am_an_id"));
Assert.assertEquals("I am a div", div.getText()); //check the text retrieved matches expected value
driver.findElement(By.id("comments")).sendKeys("My comment"); //populate the comments field by id.

//close the app.
driver.quit();

Python Example

# python
# setup the web driver and launch the webview app.
capabilities = { ‘browserName‘: ‘Safari‘ }
driver = webdriver.Remote(‘http://localhost:4723/wd/hub‘, capabilities)

# Navigate to the page and interact with the elements on the guinea-pig page using id.
driver.get(‘http://saucelabs.com/test/guinea-pig‘);
div = driver.find_element_by_id(‘i_am_an_id‘)
# check the text retrieved matches expected value
assertEqual(‘I am a div‘, div.text)

# populate the comments field by id
driver.find_element_by_id(‘comments‘).send_keys(‘My comment‘)

# close the driver
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:

// java
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
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.

时间: 2024-10-09 17:51:29

Automating mobile web apps的相关文章

Isomorphic JavaScript: The Future of Web Apps

Isomorphic JavaScript: The Future of Web Apps At Airbnb, we’ve learned a lot over the past few years while building rich web experiences. We dove into the single-page app world in 2011 with our mobile web site, and have since launched Wish Lists and

[WebView学习之六]:Web Apps最佳实践规则

上一篇我们学习了([WebView学习之五]:调试Web Apps),今天我们来继续学习. (博客地址:http://blog.csdn.net/developer_jiangqq),转载请注明. Author:hmjiangqq Email:[email protected] 为移动设备开发Web页面以及Web应用程序(Application)和开发传统的桌面Web浏览器相比存在一些不同的地方以及难点.为了帮助你更好的开发以及为移动设备开发出更加有效的Web应用程序,以下讲到的开发实践规则将会

自定义开发的系统整合 office Web apps

Office文档的web应用叫WOPI Host或者WOPI Server. 把查看编辑操作Office文档的web应用叫WOPI Client或者叫WOPI applications. 所以,Office Web Apps充当的就是WOPI Client的角色. SharePoint,Exchange,自己开发的文档管理系统充当的就是WOPI Host的角色. 再看一下,浏览器,server,client三者的请求顺序及关系 其实网上有关office web app的整合已经有相关的文章了

Asp.net与office web apps的整合

事实上网上有关office web app的整合已经有相关的文章了,典型的是怎样整合Office Web Apps至自己开发的系统(一) 和怎样整合Office Web Apps至自己开发的系统(二),微软官网也有对应的demo. 这里在简单描写叙述一下原理吧:office web apps(owas)扮演者一个客服端,它会訪问我们asp.net 网站的文件然后呈现出来.而我们经常使用的API主要有例如以下3个: GET api/wopi/files/{name}?access_token={a

【Office Web Apps】在 SharePoint 中使用 Office Web Apps

在 SharePoint 中使用 Office Web Apps 在安装并配置了 Microsoft Office Web Apps 的 SharePoint 网站上,通过 Office Web Apps,您可以从连接到您所在组织 SharePoint 网站的任意位置基于浏览器查看和编辑 Office 文档.如果您使用的是 Microsoft Office 2010,则可将 Word.Excel.PowerPoint 和 OneNote 文档从 Office 程序直接保存到 SharePoint

HTML5和Web Apps框架和方法

单页: 1jQuery Mobile 该框架以其基于AJAX的导航系统和可使用主题的ThemeRoller设计而闻名.支持Android,ios,Windows Phone,webOs等.编程模式为CSS和JS,在DOM上声明,用CSS和data-*属性标记. 2jQTouch 它是一个Zepto/jQuery插件,也是一个很容易上手的简单框架,它提供一组基本的小部件和动画,但是缺乏多平台支持,该框架还苦于缓慢而闪烁的动画以及延时的单击事件,只支持ios和Android.编程模式重CSS轻JS,

Progressive Web Apps入门

PC和Mobile开发技术演进 PC方向,从客户端到富客户端,到现在广泛使用的Web. 移动方向,目前主要还是原生应用和Mobile Web,PWA相关技术是未来发展方向. PWA的概念 Progressive Web App (中文翻译为:渐进式Web应用)带来的体验将网络应用的优点与原生应用的优点相结合.用户在浏览器中第一次访问时就能体会到它们的好处,因为不需要进行任何安装.在用户随着时间的推移增进与应用的关系后,其功能会变得越来越强大.它即使在不可靠网络上也能快速加载.能够发送相关推送通知

免费电子书:Azure Web Apps开发者入门

(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:之前介绍过微软正在逐步出版一个名为Azure Essential的入门系列教程,最近刚刚推出了一本向开发者介绍Web Apps的电子书. Microsoft Azure提供了大量的功能,而Azure Web Apps(之前称之为WebSite)是最常用也是最易用的一个功能,它能够让你快速地把Web应用程序上线.Azure Web Apps不但支持.NET,使用Java.Node.js.PHP和

部署 Office Web Apps(2)

在自家笔记本上的虚拟机上测试安装Office Web Apps,下载一堆东西,折腾两天,终于可用了,但在浏览器自己开发的web应用中编辑office文档,还需研究.使用Office Web Apps server在浏览器浏览office文档没有问题了