Android 常用 adb 命令总结

针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命令将会用于自动化测试的脚本当中。 Android Debug Bridge adb 其实就是 Android Debug Bridge, Android 调试桥的缩写,adb 是一个 C/S 架构的命令行工具,主要由 3 部分组成: 运行在 PC 端的 Client : 可以通过它对 Android 应用进行安装、卸载及调试 Eclipse 中的 ADT、SDK Tools 目录下的 DDMS、Monitor 等工具,都是同样地用到了 […]

appium简明教程 11 – 使用resource id定位

上一节乙醇带大家了解了appium的定位策略。实际上appium的控件定位方式是完全遵守webdriver的mobile扩展协议的。 这一节将分享一下如何使用resource id来定位android策略。 什么是resource id,这个不属于本文的范畴,大家可以点这里了解。 我们可以有两种方式来使用resource id进行定位: 使用findElement(By.id(“resourceId”))的方式。这也是原生的webdriver定义的方法,不过竟然在appium的官方文档里没有提及,属于隐藏技; 使用find_elements_by_android_uiautomator(‘ne […]

appium简明教程 10 – 控件定位基础

狭义上讲,UI级的自动化测试就是让机器代替人去点来点去的过程。 但机器去点什么(点上面还是点左边),怎么点(是长按还是轻触),这些东西是必须由代码的编写者所指示清楚的。 控件定位就是解决机器点什么的问题的。 一般说来,我们可以这样告诉机器:去点登陆按钮。 机器很笨,它并不知道什么是登陆按钮。因为登陆按钮是自然语言的描述。 如果你让一个人去点登陆按钮,那么他其实也是要经过一系列的脑补以后才可以做这件事的。

appium简明教程 8 – 那些工具

那片笑声让我想起我的那些tool 在我生命每个角落静静为我开着 我曾以为我会永远守在她身旁 今天我们已经离去在人海茫茫 她们都老了吧 都更新换代了吧 幸运的是我曾陪她们开发 啦…… 想她 啦…… 她还更新吗 啦…… 去呀 她们已经被风吹走散落在天涯 正所谓工欲善其事必先利其器,对于appium实战android来说,下面的这些工具(以windows系统为例)是必须熟练使用的。

appium简明教程 6 – 启动appium及android模拟器

一般情况下,我们都从命令行启动appium。 windows下,dos命令窗口输入 appium 如果该命令报错,那么请重装appium npm install -g appium 如果安装出错,请自行更换npm源。 npm -g –registry http://registry.cnpmjs.org install appium 然后请打开android的模拟器,如果没有请新建一个虚拟设备。请自行解除设备锁定(手动把屏幕解锁了),以防万一。

appium简明教程 3 – appium的安装 windows版

appium的哲学里有一条就是不重新发明轮子。同样,官方已经有明确的安装步骤了,因此在这里纯属搬砖。 原文地址 感谢testerhome的辛勤翻译。 限制 如果你在windows上安装appium,你没法使用预编译专用于OS X的.app文件,你也将不能测试IOS apps,因为appium依赖OS X专用的库来支持IOS测试。这意味着你只能通过在mac上来运行IOS的app测试。这点限制挺大。

appium简明教程 2 – appium的基本概念

Client/Server Architecture appium的核心其实是一个暴露了一系列REST API的server。 这个server的功能其实很简单:监听一个端口,然后接收由client发送来的command。翻译这些command,把这些command转成移动设备可以理解的形式发送给移动设备,然后移动设备执行完这些command后把执行结果返回给appium server,appium server再把执行结果返回给client。 在这里client其实就是发起command的设备,一般来说就是我们代码执行的机器,执行appium测试代码的机器。狭义点理解,可以把client理解 […]

selenium webdriver学习 21 – Selenium Grid深入学习

应网友要求写一个用Selenium Grid控制多系统多浏览器并行执行test case的例子。 因为我这里有两台机子,我打算这样演示: 一台机子启动一个作为主点节的hub 和 一个作为次节点的hub(系统windows 浏览器为ie) ip为:192.168.40.24 另一台机子启动两个次节点hub,一个次节点浏览器为firefox,另一个浏览器为chrome (系统为windows),ip为:192.168.40.67

selenium webdriver学习 19 – 我们的构建文件CrazyFunBuild (译)

WebDriver 是一个庞大的工程。如果我们试着把所有的东西都放在一个单独的构建文件里,它最终会变得难于管理。我们知道会这样。因为我们已经尝试过了。所以我们把单独的 Rakefile 分成一系列 build.desc 文件。它们描述构建的一部分。 让我们看一个 build.desc 文件。这是测试主要的 build.desc 部分:

selenium webdriver学习 18 – 构建webdriver

准备环境 对所有版本的webdriver: Java JDK 5或以上(如果没有安装从oracle的网站上下载) 源代码(如果没有,导出源代码,可参考:selenium webdriver学习(十七)) 另外,interntetExplorerDriver需要一些额外的组件并且只能构建在windows系统上。 Visual Studio 2010 Professional及以上 “msbuild”需要加入到PATH路径 构建基于Rake,一个著名的Ruby构建工具。我们提供你在构建此项目的所有gems,虽然这并不是推荐以这种方式来构建。绑定JRuby jar,通过“go […]

selenium webdriver学习 16 – 用selenium webdriver实现selenium RC中的类似的方法

最近想总结一下学习selenium webdriver的情况,于是就想用selenium webdriver里面的方法来实现selenium RC中操作的一些方法。目前封装了一个ActionDriverHelper类,来实现RC中Selenium.java和 DefaultSelenium.java中的方法。有一些方法还没有实现,写的方法大多没有经过测试,仅供参考。代码如下:

selenium webdriver学习 15 – 如何处理FirefoxProfile

这一节主要涉及 selenium webdriver处理Firefox profile的一些知识。 什么是Firefox profile 要了解Firefox profile请访问这里(http://support.mozilla.org/zh-CN/kb/%E7%94%A8%E6%88%B7%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6),它详细解绍了Firefox proflie。在Firefox里,如何管理Firefox profile 请访问这里(http://support.mozilla.org/zh-CN/kb/%E7%AE%A1%E7%90%86%E7 […]

selenium webdriver学习 13 – 如何利用Actions类模拟鼠标和键盘的操作

如何把一个元素拖放到另一个元素里面的时候,用到了一个Actions类。这一节主要分析一下这个Actions类。 这个actions类,主要定义了一些模拟用户的鼠标mouse,键盘keyboard操作。对于这些操作,使用perform()方法进行执行。 actions类可以完成单一的操作,也可以完成几个操作的组合。 单一的操作 单一的操作是指鼠标和键盘的一个操作。如鼠标左键按下、弹起或输入一个字符串等。 前面涉及到鼠标键盘操作的一些方法,都可以使用actions类中的方法实现,比如:click,sendkeys。

selenium webdriver学习 11 – 怎么等待页面元素加载完成

web的自动化测试中,我们经常会遇到这样一种情况:当我们的程序执行时需要页面某个元素,而此时这个元素还未加载完成,这时我们的程序就会报错。怎么办?等待。等待元素出现后再进行对这个元素的操作。 在selenium-webdriver中我们用两种方式进行等待:明确的等待和隐性的等待。 明确的等待 明确的等待是指在 代码进行下一步操作之前等待某一个条件的发生。最不好的情况是使用Thread.sleep()去设置一段确认的时间去等待。但为什么说最不好呢?因为一 个元素的加载时间有长有短,你在设置sleep的时间之前要自己把握长短,太短容易超时,太长浪费时间。selenium webdriver提供了一 […]

selenium webdriver学习 10 – 怎么把一个元素拖放到另一个元素里面

Q群里有时候会有人问,selenium webdriver怎么实现把一个元素拖放到另一个元素里面。这一节总一下元素的拖放。 下面这个页面是一个演示拖放元素的页面,你可以把左右页面中的条目拖放到右边的div框中。 http://koyoz.com/demo/html/drag-drop/drag-drop.html 现在来看看selenium webdriver是怎么实现drag and drop的吧。let‘s go!