From 5472fa6ace842e42f69dd23fbaea9d887298e2a3 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 18 Nov 2013 11:41:44 +0800 Subject: [PATCH] add chinese docs and a ruby xunit testcase sample for android --- docs/cn/mobile-web.cn.md | 96 ++++++++++++++++++++++ docs/cn/mobile_methods.cn.md | 61 ++++++++++++++ docs/cn/running-on-windows.cn.md | 1 - sample-code/examples/ruby/xunit_android.rb | 50 +++++++++++ 4 files changed, 207 insertions(+), 1 deletion(-) create mode 100644 docs/cn/mobile-web.cn.md create mode 100644 docs/cn/mobile_methods.cn.md create mode 100644 sample-code/examples/ruby/xunit_android.rb diff --git a/docs/cn/mobile-web.cn.md b/docs/cn/mobile-web.cn.md new file mode 100644 index 00000000000..ba8e009a1b1 --- /dev/null +++ b/docs/cn/mobile-web.cn.md @@ -0,0 +1,96 @@ +自动化手机网页应用 +====================== + +如果你正对于如何在iOS的Safari或Android上的Chrome做网页应用的自动化,那么Appium能够帮助你。你可以写一个最普通的WebDriver测试代码,就像使用Selenium服务一样使用Appium来满足需求。 + +###iOS模拟器上的Safari浏览器 + +首先,我们需要先确认在你的Safari浏览器的设置中开启了开发者模式,这样Safari的远程调试端口也会被同时打开。 + +如果你打算在模拟器或真机上使用Appium的话,你必须先开发Safari。 + +然后设置如下显示的这些信息以便于在设备中的Safari执行测试: +```js +{ + app: 'safari' + , device: 'iPhone Simulator' + , version: '6.1' +} +``` + +###iOS真机上的Safari浏览器 + +为了能够在真机上的Safari执行测试,我们使用了[SafariLauncher App](https://github.com/snevesbarros/SafariLauncher)来启动Safari。使用[ios-webkit-webkit-proxy](https://github.com/google/ios-webkit-debug-proxy)来自动启动Safari的远程调试功能。 + +提示: 目前针对iOS7版本的上,ios-webkit-debug-proxy有一个问题。[a bug](https://github.com/google/ios-webkit-debug-proxy/issues/38) + +#### 前期设置 + +当你要在真机上的Safari中执行你的测试脚本之前你需要先注意以下几点: +*安装并正常运行ios-webkit-debug-proxy(具体可以参考(s[hybrid docs](https://github.com/appium/appium/blob/master/docs/hybrid.md)) +*打开iOS真机中的web inspector,可以在iOS6.0或更高版本中的设置 > safari > 高级找到。 +*创建一个provisioning profile 能够帮助你配置safariLauncher. +* +你可以前往Apple Developers Member Center 创建一个launcher profile: + * 第一步: 创建一个新的App Id 同时设置WildCard App ID这个选项置为"*" + * 第二步: 为步骤1的App Id创建一个new Development Profile . + * 第三步: 选择你的certificate(s) and device(s) 并选择下一步. + * 第四步: 设置profile的名称以及generate the profile. + * 第五步: 下载profile并使用文本编辑器打开. + * 第六步: 寻找并牢记你的UUID + +现在你有了自己的profile文件,可以在终端中输入如下的命令: +```bash +$ git clone https://github.com/appium/appium.git +$ cd appium + +# 选项1:你可以不设置任何的参数就可以设置ios开发者证书 +$ ./reset.sh --ios --real-safari + +# 选项2:你需要定义code signing identity并且允许xcode可选择profile identity code +$ ./reset.sh --ios --real-safari --code-sign '' + +#选项3:你需要设置 +$ ./reset.sh --ios --real-safari --code-sign '' --profile '' + +#设置成功之后,就可以像往常一样启动服务 +$ node /lib/server/main.js -U +``` + +#### 执行你的测试 +如果要在safari下的运行你的测试, 只需要简单的配置app为safari即可 + + +##### Java 举例 +```java +//setup the web driver and launch the webview app. +DesiredCapabilities desiredCapabilities = new DesiredCapabilities(); +desiredCapabilities.setCapability("app", "safari"); +URL url = new URL("http://127.0.0.1:4723/wd/hub"); +RemoteWebDriver remoteWebDriver = new RemoteWebDriver(url, desiredCapabilities); + +// Navigate to the page and interact with the elements on the guinea-pig page using id. +remoteWebDriver.get("http://saucelabs.com/test/guinea-pig"); +WebElement div = remoteWebDriver.findElement(By.id("i_am_an_id")); +Assert.assertEquals("I am a div", div.getText()); //check the text retrieved matches expected value +remoteWebDriver.findElement(By.id("comments")).sendKeys("My comment"); //populate the comments field by id. + +//close the app. +remoteWebDriver.quit(); +``` + +### 在真机或模拟器上的Chrome执行测试 + +需要做的准备: + +* 确认Chrome已经安装在了你的真机或模拟器上 (应用的包名是`com.android.chrome`) .在不编译chromiun的情况下, 不可能得到模拟器上的x86版本的chrome, 你可以运行一个ARM的模拟器然后从真机上获取一个Chrome的APK安装在模拟器上. +* 确认 [ChromeDriver](https://code.google.com/p/chromedriver/downloads/list), version >= 2.0 正确的安装在你的系统上并且设置了`chromedriver`成为系统全局变量. + +接着,像这样设置就可以在Chrome上执行测试了: + +```js +{ + app: 'chrome' + , device: 'Android' +}; +``` diff --git a/docs/cn/mobile_methods.cn.md b/docs/cn/mobile_methods.cn.md new file mode 100644 index 00000000000..19b29dd3404 --- /dev/null +++ b/docs/cn/mobile_methods.cn.md @@ -0,0 +1,61 @@ +#### 跨平台的移动测试方法 + +##### 移动测试的重置方法reset + +reset方法会重置待测应用的状态 + +Ruby + [appium_lib gem](https://github.com/appium/ruby_lib) +```ruby +mobile :reset +``` + +不使用其他gem的方式 + +```ruby +@driver.execute_script 'mobile: reset' +``` + +#### Android下的移动测试方法 + +##### 移动测试的按键事件keyevent + +[KeyEvent](http://developer.android.com/reference/android/view/KeyEvent.html) 提供了发送按键码(keycode)到Android的能力. + +在java中按下系统菜单键的演示 + +```java +HashMap keycode = new HashMap(); +keycode.put("keycode", 82); +((JavascriptExecutor)driver).executeScript("mobile: keyevent", keycode); +``` + +Ruby + [appium_lib gem](https://github.com/appium/ruby_lib) + +```ruby +mobile :keyevent, keycode: 82 +``` + +不使用第三方gem的方式 + +```ruby +@driver.execute_script 'mobile: keyevent', :keycode => 82 +``` + +#### 移动测试的Find方法 + +Java + +```java + JSONArray json = new JSONArray(); + json.put("scroll"); + json.put(new JSONArray().put(new JSONArray().put(3).put("Gallery"))); + json.put(new JSONArray().put(new JSONArray().put(7).put("Gallery"))); + // json is now: ["scroll",[[3,"Gallery"]],[[7,"Gallery"]]] + ((JavascriptExecutor) driver).executeScript("mobile: find", json); +``` + +Ruby + [appium_lib gem](https://github.com/appium/ruby_lib) + +```ruby +scroll_to 'Gallery' +``` diff --git a/docs/cn/running-on-windows.cn.md b/docs/cn/running-on-windows.cn.md index e2624e61c39..58e0621577f 100644 --- a/docs/cn/running-on-windows.cn.md +++ b/docs/cn/running-on-windows.cn.md @@ -61,4 +61,3 @@ appiun会启动2个端口,一个是4723,用于webdriver协议,一个是472 如果有任何疑问,欢迎到testerhome.com来交流 -作者:seveniruby diff --git a/sample-code/examples/ruby/xunit_android.rb b/sample-code/examples/ruby/xunit_android.rb new file mode 100644 index 00000000000..85aad85ebb7 --- /dev/null +++ b/sample-code/examples/ruby/xunit_android.rb @@ -0,0 +1,50 @@ +# this test show you how to use flick and locate element by parent container +# it open the system settings ui, and click the 'About phone' item to find android version +# create by testerhome.com +# author: seveniruby + +require 'test/unit' +require 'selenium-webdriver' + +def capabilities + { + 'browserName' => 'android', + 'platform' => 'linux', + 'version' => '4.1', + 'app-activity'=> '.Settings', + 'app-package'=> 'com.android.settings' + } +end + +def init(data={}) + server_url = 'http://127.0.0.1:4723/wd/hub' + driver = Selenium::WebDriver.for(:remote, :desired_capabilities => capabilities.merge(data), :url => server_url) + driver.manage.timeouts.implicit_wait = 20 # seconds + driver +end + +class SettingsTest < Test::Unit::TestCase + def setup + @driver=init + end + def test_settings + #flick the screen until find the Aboud phone item + while @driver.find_elements(:xpath, '//text[@text="About phone"]').count==0 + begin + @driver.execute_script 'mobile: flick', :startY=>0.9, :endY=>0.1 + rescue + end + end + about=@driver.find_element(:xpath, '//text[@text="About phone"]') + about.click + #parent select, locate the container + version_setting=@driver.find_element(:xpath, '//list/linear[4]/relative') + #child select + version_value=version_setting.find_element(:xpath, '//text[2]') + #check the version, should be 4.1.2 or other version string + assert_not_equal nil, version_value.text=~/[0-9\.]/ + end + def teardown + @driver.quit + end +end