UI自动化java代码怎么写中用java怎么写输入框

UI自动化测试(四)AutoIT工具使用和robot对象模拟键盘按键操作
时间: 13:30:29
&&&& 阅读:92
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&AutoIT简介
AutoIt 目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。而这是其它语言不可能做到或无可靠方法实现的(例如VBScript和SendKeys)。
实现原理:
使用AutoIT下的工具去定位页面外的元素属性值,其次再利用AutoIT下的工具编写合适的脚本,然后将脚本编译成可执行文件,最后在自动化实现时,直接调用此脚本实现文件的上传、下载等操作。
备注:定位元素、编写脚本和编译,需要借助AutoIT提供的工具,但是脚本编译成可执行文件后,可以直接使用。
AutoIT的下载及安装
下载地址:
打开网页,点击如下图所示按钮,即可下载:
AutoIT的安装
安装很简单,一路默认路径就好,安装成功后,在开始菜单可看到如下图所示界面:
使用AutoIT工具的步骤
1.AutoIT Window Info用来识别Windows控件,根据识别的控件信息编写脚本;x86为32位
2.SciTE Script Editor用来写脚本,并保存为au3格式
3.Complie Script to .exe, 将刚编写的脚本,编译成可执行文件;
4.编译后在java代码中中调用
想必介绍到这,或多或少有所了解了,对AutoIT工具下的功能点也清楚了,Run Script是运行脚本的,我们是要到java代码中调用,所以此处就略过了。
接下来就用一个实例来讲解下AutoIT工具的具体使用,实例功能是:把百度首页中的百度图片另存为到本地或任意磁盘
在做这个事情的时候,我们要知道,步骤是先要选中图片,并右击,选择另存为,然后输入文件名以及保存的位置,最后点击保存。人工操作鼠标很简单,但现在是要使用代码来实现该功能,可细化分为三步,如下:
1.使用Selenium功能弹出右键菜单
2.利用robot选择相关菜单
3.调用AutoIT实现另存为操作
4.到java代码中调用
实现第一步,在浏览器中定位到图片元素,代码如下:
WebElement img = driver.findElement(By.cssSelector("div#lg img"));
Actions action = new Actions(driver);
action.contextClick().perform();
实现第二步,模拟键盘操作,鼠标移到另存为处,使用robot对象,代码如下:
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_DOWN);
Thread.sleep(1000);
robot.keyPress(KeyEvent.VK_DOWN);
VK_DWON是操作按钮向下按一下的意思,因为另存为在右键菜单中的第二行,所以需要向下按两下实现
实现上述两步代码后,会弹出如下所示框,让输入文件名以及保存路径,该对话框已经是页面外的元素了,使用普通的定位时定不到了,所以就需要使用AutoIT工具来实现。
实现第三步,操作如下:
①打开autoit工具包下的AutoIT Window Info(x64)工具,版本按自己电脑系统来,界面如下所示:
1.1鼠标点中Finder Tool并拖动到输入文件名处,操作如下所示,得到下图结果
1.2重复上述定位步骤,定位保存按钮,结果如下图所示
②元素定位到了,接下来就是使用AutoIT工具包下的SciTE Script Editor写脚本,并保存为au3格式,注意:此工具中;表注释
根据定位到的参数值,写如下脚本:
ControlFocus("另存为", "","Edit1")
WinWait("[CLASS:#32770]","",10);文件路径
ControlSetText("另存为", "", "Edit1", "d:\baidu.png")
Sleep(2000)
ControlClick("另存为", "","Button2")
代码解释:
第一行:ControlFocus ( "title", "窗口文本", controlID) 设置输入焦点到指定窗口的某个控件上;
第二行:WinWait ( "title题" , "窗口文本" , 超时时间 ) 暂停脚本的执行直至指定窗口存在(出现) 为止;
第三行:;表注释
第四行:ControlSetText ( "title", "窗口文本", controlID, "新文本" ) 修改指定控件的文本;
第五行:Sleep ( 延迟 ) 使脚本暂停指定时间段;
第六行:ControlClick ( "title", "窗口文本", 控件ID , 按钮 , 点击次数 ) 向指定控件发送鼠标点击命令;
其中, title即AutoIt Window Info识别出的Title字段, controlID即AutoItWindow Info识别出的Class和Instance的拼接, 如上图拼接后的结果应为:Button2。
③使用AutoIT工具包下的Complie Script to .exe工具把刚编写的脚本编译成可执行文件,操作如下:
执行上步骤后,会出现baidu.exe可执行文件
第四步,到java代码中调用该可执行文件,操作代码如下:
Runtime.getRuntime().exec("d:/baidu.exe");
运行java代码,在定义的路径下会看到已保存的百度图片,如下所示:
整体代码实现如下,仅供参考:
1 package com.ui.day1;
3 import java.awt.AWTE
4 import java.awt.R
5 import java.awt.event.KeyE
7 import org.openqa.selenium.By;
8 import org.openqa.selenium.WebD
9 import org.openqa.selenium.WebE
<span style="color: # import org.openqa.selenium.chrome.ChromeD
<span style="color: # import org.openqa.selenium.interactions.A
<span style="color: #
<span style="color: # public class test_demo_autoit {
<span style="color: #
<span style="color: #
public static void main(String[] args) throws Exception {
<span style="color: #
System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
<span style="color: #
WebDriver driver=new ChromeDriver();
<span style="color: #
driver.get("/");
<span style="color: #
driver.manage().window().maximize();
<span style="color: #
<span style="color: #
WebElement move = driver.findElement(By.cssSelector("div#lg img"));
<span style="color: #
Actions action = new Actions(driver);
<span style="color: #
action.contextClick(move).perform();
<span style="color: #
Thread.sleep(2000);
<span style="color: #
Robot robot = new Robot();
<span style="color: #
robot.keyPress(KeyEvent.VK_DOWN);
<span style="color: #
Thread.sleep(1000);
<span style="color: #
robot.keyPress(KeyEvent.VK_DOWN);
<span style="color: #
Thread.sleep(1000);
<span style="color: #
robot.keyPress(KeyEvent.VK_ENTER);
<span style="color: #
<span style="color: #
Runtime.getRuntime().exec("d:/baidu.exe");
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: # }
将百度首页中的图片另存为还有一个实现方法,不用robot对象,直接在AutoIT编写脚本中发送个V,因为选择另存为和按V是一样的作用,AutoIT编写脚本代码如下:
Sleep(1000)
ControlFocus("另存为", "","Edit1")
WinWait("[CLASS:#32770]","",10)
ControlSetText("另存为", "", "Edit1", "d:\baidu.png")
Sleep(2000)
ControlClick("另存为", "","Button2")
在java代码中实现如下,仅供参考:
1 package com.ui.day1;
2 import org.openqa.selenium.By;
3 import org.openqa.selenium.WebD
4 import org.openqa.selenium.WebE
5 import org.openqa.selenium.chrome.ChromeD
6 import org.openqa.selenium.interactions.A
8 public class yihuqingjiu_test_demo_autoit1 {
<span style="color: #
public static void main(String[] args) throws Exception {
<span style="color: #
System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
<span style="color: #
WebDriver driver=new ChromeDriver();
<span style="color: #
driver.get("/");
<span style="color: #
driver.manage().window().maximize();
<span style="color: #
<span style="color: #
WebElement move = driver.findElement(By.cssSelector("div#lg img"));
<span style="color: #
Actions action = new Actions(driver);
<span style="color: #
action.contextClick(move).perform();
<span style="color: #
Thread.sleep(2000);
<span style="color: #
Runtime.getRuntime().exec("d:/baidu.exe");
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: # }
在禅道中上传附件,从实例一中已明白整个操作过程,因而在该实例中便只介绍下页面外元素定位以及java代码实现。
页面外元素定位,编写脚本代码如下所示:
ControlFocus("打开", "","Edit1")
WinWait("[CLASS:#32770]","",10)
ControlSetText("打开", "", "Edit1", "F:\new\UI\测试.pdf")
Sleep(2000)
ControlClick("打开", "","Button1")
java代码实现如下,仅供参考:
1 package com.ui.day1;
3 import org.openqa.selenium.By;
4 import org.openqa.selenium.WebD
5 import org.openqa.selenium.chrome.ChromeD
7 public class yihuqingjiu_test_demo_au {
public static void main(String[] args) throws Exception {
<span style="color: #
System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
<span style="color: #
WebDriver driver=new ChromeDriver();
<span style="color: #
driver.get("http://127.0.0.1/zentao/my/");
<span style="color: #
driver.manage().window().maximize();
<span style="color: #
driver.findElement(By.id("account")).sendKeys("admin");
<span style="color: #
Thread.sleep(1000);
<span style="color: #
driver.findElement(By.name("password")).sendKeys("123456");
<span style="color: #
Thread.sleep(1000);
<span style="color: #
//点击登录
<span style="color: #
driver.findElement(By.xpath("//button[@id=‘submit‘]")).click();
<span style="color: #
Thread.sleep(2000);
<span style="color: #
//点击测试
<span style="color: #
driver.findElement(By.linkText("测试")).click();
<span style="color: #
Thread.sleep(1000);
<span style="color: #
<span style="color: #
driver.findElement(By.linkText("Bug")).click();
<span style="color: #
Thread.sleep(1000);
<span style="color: #
//点击提交Bug
<span style="color: #
driver.findElement(By.xpath("//a[@href=‘/zentao/bug-create-5-0-moduleID=0.html‘]")).click();
<span style="color: #
Thread.sleep(1000);
<span style="color: #
<span style="color: #
//调用AutoIT工具
<span style="color: #
Runtime.getRuntime().exec("d:/chandao/chandao.exe");
<span style="color: #
Thread.sleep(5000);
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: # }
需要注意的是,使用AutoIT工具时进行自动化脚本运行时,要把杀毒软件关掉,不然会影响,误判是病毒
robot对象模拟键盘按键操作
在前一篇中说到的键盘事件,是使用Actions类,但实现效果不明显,所以用Robot类,创建robot对象来实现,效果很好,话不多说,直接上代码。
代码实现如下,仅供参考:
1 package com.ui.day1;
3 import java.awt.R
4 import java.awt.event.KeyE
6 import org.openqa.selenium.By;
7 import org.openqa.selenium.WebD
8 import org.openqa.selenium.WebE
9 import org.openqa.selenium.chrome.ChromeD
<span style="color: #
<span style="color: # public class yihuqingjiu_test_robot_mouse {
<span style="color: #
<span style="color: #
public static void main(String[] args) throws Exception {
<span style="color: #
System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
<span style="color: #
WebDriver driver=new ChromeDriver();
<span style="color: #
//浏览器要加载的url
<span style="color: #
driver.get("");
<span style="color: #
//窗口最大化
<span style="color: #
driver.manage().window().maximize();
<span style="color: #
<span style="color: #
WebElement ctr1=driver.findElement(By.cssSelector("#kw"));
<span style="color: #
ctr1.sendKeys("12306");
<span style="color: #
Thread.sleep(1000);
<span style="color: #
<span style="color: #
//按下ctrl+F4
<span style="color: #
Robot robot = new Robot();
<span style="color: #
robot.keyPress(KeyEvent.VK_ALT);
<span style="color: #
robot.keyPress(KeyEvent.VK_F4);
<span style="color: #
robot.keyRelease(KeyEvent.VK_ALT);
<span style="color: #
<span style="color: #
//按下ctrl+shift+delete
<span style="color: #
Robot robot1 = new Robot();
<span style="color: #
robot1.keyPress(KeyEvent.VK_CONTROL);
<span style="color: #
robot1.keyPress(KeyEvent.VK_SHIFT);
<span style="color: #
robot1.keyPress(KeyEvent.VK_DELETE);
<span style="color: #
robot1.keyRelease(KeyEvent.VK_CONTROL);
<span style="color: #
robot1.keyRelease(KeyEvent.VK_SHIFT);
<span style="color: #
robot1.keyRelease(KeyEvent.VK_DELETE);//delete键可不释放,但ctrl+shift键必须释放
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: # }
键盘事件实现时,需要值得注意的是,ctrl,shift、alt键需要释放,不然会影响后者操作。
按下操作的关键字是keyPress(),按键释放关键字是keyRelease()
本文仅代表作者观点,系作者@温一壶清酒发表。转载请注明出处:
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&国之画&&&& &&&&chrome插件&&
版权所有 京ICP备号-2
迷上了代码!博客分类:
原创文章,转载请注明
这个框架的名字叫OAT,全称Object-Oriented
Automation Test.这个框架的思想借助于Tellurium框架.他的主要功能是将页面信息及行为存储在Java 对象中,然后在脚本中引用页面的行为.自动化程序最终由许多的页面行为组成.这个框架默认使用Selenium1驱动,并且可以通过编程使用其他驱动,因为OAT是面向接口的.
以下以google home page的demo为例,介绍这个基于Annoation和反射的框架基本运行原理.
//存储页面URL
@OatPage("webhp")
public class GooglePage extends Page{
@Element("q") // 搜索输入框的定位符
private TextField textF
@Element("btnG") // 搜索按钮的定位符
private Button searchB
// TextField和Button有共同的祖先类Element
public TextField getTextField() {
return textF
public Button getSearchButton() {
return searchB
//进行一次搜索
public void doSearch(String q){
this.textField.type(q);
this.searchButton.click();
TextField和button类
// Element子类,有自己独特的行为
public class TextField extends Element {
public void type(String value) {
vendor.type(locator, value);
public boolean idEditable(){
return vendor.isEditable(locator);
public String getValue() {
return vendor.getAttribute(locator);
// 同样是Element的子类,有自己行为
public class Button extends Element {
public void click() {
vendor.click(locator);
public void clickAndWaitToLoad(Page page){
page.waitToLoad();
public void clickAndWaitToLoad(Page page, long timeout) {
page.waitToLoad(timeout);
public void clickAndWaitToLoad(Element element, long timeout) {
element.waitToLoad(timeout);
public void clickAndWaitToLoad(Element element) {
clickAndWaitToLoad(element, ELEMENT_DEFAULT_TIMEOUT);
自动化测试脚本代码
import junit.framework.A
import org.junit.A
import org.junit.B
import org.junit.T
import com.thoughtworks.selenium.DefaultS
import com.thoughtworks.selenium.S
public class GoogleSearchTestExample1 {
private String serverUrl = "localhost";
private int serverPort = 4444;
private String browserCommand = "googlechrome";
private String url = ".hk";
private GoogleP
private GoogleResultPage resultP
public void setUp() throws Exception {
// 初始化selenium
selenium = new DefaultSelenium(serverUrl,serverPort,browserCommand, url);
// Oat类是框架总的控制器,设置Selenium为背后的驱动
oat = Oat.getInstance(selenium);
oat.start();
oat.open("/webhp");
// 初始化被测试页面
page = (GooglePage) oat.getPage(GooglePage.class);
resultPage = (GoogleResultPage) oat.getPage(GoogleResultPage.class);
public void testSearch() throws InterruptedException {
// 在google页面收入"oat"进行搜索
page.doSearch("oat");
page.waitToLoad(2000);
// 在结构页面进行验证
boolean result = resultPage.isTextPresent("oat");
Assert.assertTrue("Text oat is present", result);
public void tearDown() throws Exception {
oat.stop();
selenium =
Oat.getInstance(Object engine):用于获取真正的Driver:
//可以根据传入的不同engine,实例化不同的Vendor
public static Oat getInstance(Object engine) {
if(instance == null) {
synchronized(Oat.class) {
if(instance == null) {
String vendorTypeStr = getVendorTypeStr();
Class&?& vendorType = Class.forName(vendorTypeStr);
Vendor vendor = getVendor(vendorType, engine);
instance = new Oat();
instance.vendor =
} catch (ClassNotFoundException e) {
throw new RuntimeException("Not Found vendor " + vendorTypeStr, e);
Oat.getPage()方法详解
public Page getPage(Class&? extends Page& pageType) {
Page page =
page = initialize(pageType);
page.setVendor(vendor);
private Page initialize(Class&? extends Page& pageType) {
//读取page类中的annotation
OatPage anno = pageType.getAnnotation(OatPage.class);
if(anno == null) {
throw new RuntimeException("Please add com.ponent.annotaion.OatPage annotation in Page class!");
Page page =
page = pageType.newInstance();
} catch (Exception e) {
throw new RuntimeException("Page Class must have a non-parameter constructor.", e);
Class&?& tempType = pageT
while(tempType != null) {
Field[] fields = tempType.getDeclaredFields();
for(Field field : fields ) {
com.ponent.annotaion.Element annotation =
field.getAnnotation(com.ponent.annotaion.Element.class);
if(annotation == null) {
Class&?& fieldClazz = field.getType();
// 只处理Element的子类
Class&? extends Element& elementClazz = fieldClazz.asSubclass(Element.class);
String locator = annotation.value();
field.setAccessible(true);
//使用反射初始化Page类的各个Element子类,并赋予Locator值
field.set(page, getElement(elementClazz, locator));
} catch (Exception e) {
throw new RuntimeException("set Element " + field.getName() + " error", e);
tempType = tempType.getSuperclass();
//用于初始化Page类中的各个Element子类
private Element getElement(Class&? extends Element& elementType, String locator) {
Element element =
element = elementType.newInstance();
element.setLocator(locator);
element.setVendor(vendor);
} catch (Exception e) {
throw new RuntimeException(e);
以上就是一个完整的基于Selenium driver的框架实现.以下是我们的Vendor接口:
public interface Vendor {
public void start();
public void stop();
public void open(String url);
public void openWindow(String url, String windowId);
public void type(String locator, String value);
public void check(String locator);
public void uncheck(String locator);
public boolean isChecked(String locator);
public boolean isEditable(String locator);
public void select(String selectLocator, String optionLocator);
public String getSelectedLabel(String locator);
public String[] getSelectedLabels(String locator);
public boolean isSelected(String label);
public void submit(String formLocator);
public void click(String locator);
public boolean isTextPresent(String pattern);
public boolean isElementPresent(String locator);
public void waitForPageToLoad(String timeout);
public void windowFocus(String windowId);
public String getAttribute(String attributeLocator);
public String getTableCellValue(String locator, int row, int col);
public void waitForElementToLoad(String locator, String timeout);
public String getLocation();
以下是seleniumVendor的实现:
public class SeleniumVendor extends VendorTemplate&Selenium& {
protected Selenium createEngine(VendorAttribute attribute) {
return new DefaultSelenium(
attribute.getHost(),
attribute.getPort(),
attribute.getBrowser(),
attribute.getUrl());
public boolean isTextPresent(String pattern) {
return engine.isTextPresent(pattern);
public void open(String url) {
engine.open(url);
public void select(String selectLocator, String optionLocator) {
engine.select(selectLocator, optionLocator);
public void start() {
engine.start();
public void stop() {
engine.stop();
public void submit(String formLocator) {
engine.submit(formLocator);
public void type(String locator, String value) {
engine.type(locator, value);
public void click(String locator) {
engine.click(locator);
public void waitForPageToLoad(String timeout) {
engine.waitForPageToLoad(timeout);
public void windowFocus(String windowId) {
engine.selectWindow(windowId);
engine.windowFocus();
public void openWindow(String url, String windowId) {
engine.openWindow(url, windowId);
public void check(String locator) {
engine.check(locator);
public String getAttribute(String attributeLocator) {
return engine.getAttribute(attributeLocator);
public boolean isElementPresent(String locator) {
return engine.isElementPresent(locator);
public void uncheck(String locator) {
engine.uncheck(locator);
public boolean isChecked(String locator) {
return engine.isChecked(locator);
public String getSelectedLabel(String locator) {
return engine.getSelectedLabel(locator);
public String[] getSelectedLabels(String locator) {
return engine.getSelectedLabels(locator);
public boolean isSelected(String label) {
return engine.isSomethingSelected(label);
public boolean isEditable(String locator) {
return engine.isEditable(locator);
public String getTableCellValue(String locator, int row, int col) {
return engine.getTable(locator + "." + String.valueOf(row)+ "." +String.valueOf(col));
public void waitForElementToLoad(String locator, String timeout) {
String script = "selenium.isElementPresent(\"" + locator + "\")";
engine.waitForCondition(script, timeout);
public String getLocation() {
return engine.getLocation();
如果我们需要改成其他Dirver,新建立一个Vendor的实现类即可
浏览 16721
介绍很详细,谢谢! 欢迎光临
lijingshou
浏览: 613643 次
来自: 杭州
有什么办法可以找出合并的图片的位置吗?一张大图片,一张小图片, ...
good point!
Selenium自动化测试从入门到精通(Java版)百度网盘地 ...
请问$Proxy0的.class文件 您是怎么提出来的?
好用,写的详细,给个赞,就是不知道&设置jad的可执 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'UI自动化工具Appium环境搭建及自动化测试详细教程分享
UI自动化工具Appium环境搭建及自动化测试详细教程分享
软件测试那些事儿
最近在调研APP端自动化测试工具Appium,因为它支持跨平台、无侵入、支持原生及混合应用、支持多语言脚本编写等优点,目前Appium在移动端软件测试领域中也受到大家的广泛青睐,今天就分享一下自己的Appium搭建及使用过程,大家一起共同学习、共同进步。首先,我们看下业界Top自动化测试框架综合对比:Appium的设计理念:1. 无需用户对APP进行任何修改或者重新编译,App应该Born to be automated。2. 不应该限制用户只能使用特定的语言或者框架来编写和执行测试。3. 移动测试框架的API应该是稳定的,合理的。不应对自动化API 重复的造轮子。4. 移动测试框架应该是开源的,包括“精神和肉体”。Appium的架构1. IOS: 苹果的 UIAutomation2. Android:Android 4.2+: Google的 UiAutomatorAndroid 2.3+: Google’s Instrumentation. (由单独的项目Selendroid提供支持)Appium的优点--跨架构,Native、Hybrid、WebView--跨设备,Android、IOS、FireFoxOS--跨语言,Java、Python、Ruby、PHP、JavaScript等--夸App,可以在多个App之间进行交互--无需添加SDK,无需修改源码,无需重新编译测试AppAppium环境搭建及脚本编写Appium环境需求:JDK环境、Android SDK环境、Node.js、Appium、Python、Eclipse一、安装JDK并配置环境变量1. JDK下载地址: /technetwork/java/javase/downloads/jdk8-downloads-2133151.html2. 使用默认路径安装至完毕,执行java –version 验证安装成功3. 配置JDK环境变量--“我的电脑”&鼠标右键菜单&&属性&&&高级系统设置&&&环境变量&;--“系统变量”&“新建”,变量名中填写“JAVA_HOME”,变量值填JDK安装位置,如: C:Program Filesjavajdk1.6.0_45--“系统变量”&“新建”,变量名中填写“CLASSPATH”,变量值追加 .;%JAVA_HOME%libdt.%JAVA_HOME%lib ools.jar *(注意分号前面有个.符号)--“系统变量”&“path”,点击编辑,在变量值中已有内容的后面追加 ;%JAVA_HOME%%JAVA_HOME%jre二、Android SDK环境搭建1. 安装最新ADT,自行百度下载若出现Appium识别不出apk包信息,安装最新Android Studio代替ADT2. 配置Android SDK环境变量--新建 ANDROID_HOME 环境变量,变量值是SDK解压的路径,如: D:android-sdksdk--追加SDK如下目录到Path变量:
tools目录:;%ANDROID_HOME% ools
platform-tools目录:;%ANDROID_HOME%platform-tools
build-tools目录:;%ANDROID_HOME%uild-tools.0.33. 验证Android SDK相关环境变量--验证tools环境变量: cmd命令行执行 android,可启动Android SDK Manager--验证platform-tools环境变量:安装手机驱动连接真机,cmd命令行执行 adb devices, 可看到设备Id--验证build-tools环境变量: cmd命令行执行 aapt,可看到这条命令的帮助信息三、搭建Node.js环境Node.js的官网依据系统选择下载安装Node.js 和 npm(Node.js的包管理工具)2. 安装过程一路Next,直至安装完成四、安装Appium1. Appium下载(官网):2. 下载最新版v1.4.16.1, 直接双击安装直至完成,桌面会生成Appium快捷方式--Appium是用.net开发的,所以安装之前需要安装.net framework,否则安装过程中会报错,若.net framework报错,可去官网下载安装--配置appium.cmd文件所在路径: ;C:Program Files (x86)Appiumode_modules.bin 到Path环境变量3. 检查Appium所需环境是否OK?进入cmd命令行输执行appium-doctor,All checks were successful 则成功五、安装Python 2.7.11客户端(编写Python脚本)1. Python的官网依据系统选择下载安装Python 2.7.11客户端2. 参考https://pypi.python.org/pypi/setuptools文档,安装python setuptools,下载ez_setup.py, 执行命令:python ez_setup.py install3.下载Appium-python-client.zip,将文件夹解压到任意位置,然后使用命令行进入到解压后的文件夹目录,执行命令:python setup.py install六、安装Eclipse (编写Java脚本)1. Eclipse下载地址:http://www.eclipse.org/downloads/2. 依据系统选择下载后,默认安装直至完成3. 至此,Appium环境搭建完成七、在Eclipse中创建测试用例1. 创建一个空白的Android测试工程点击File-&New-&Project-&Java Project, 输入工程名称,比如 AppiumJavaTest点击finish,工程建立完成,如下图:下载appium-jar依赖包:2. 导入jar依赖包导入依赖的jar包,AppiumJavaTest右键-&Properties-&Java Build Path-&Add External JARs 将下载文件中appium-jars文件夹中的三个jar包导入,如下图:点击OK,导入3. 编写自动化测试用例创建一个Capabilities.java的文件和一个Main.java文件,如下图:打开Capabilities.java添加如下代码(Capabilities参数释义参见官方GitHub):打开Main.java,添加如下代码:注意,测试app的位置要和Capabilities里面path位置一致4. 开始自动化测试连接手机,打开调试,双击运行Appium,点击安卓机器人,按如下设置相关参数,如下图:点击右上角【启动】按钮,启动本地Appium服务(默认端口4723和Capabilities里定义一致),启动后如下图:工程右键-&Run As-&Junit Test, 如下图:注意手机界面变化、脚本以及Appium server端的日志输出,如下图:至此,Appium搭建及脚本编写完毕,就看你自己如何设计脚本、设计用例了。每天学习一点,进步一点,努力提升自己...
本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。
软件测试那些事儿
百家号 最近更新:
专注互联网及APP测试领域及自动化技术分享

我要回帖

更多关于 jsp中怎么写java代码 的文章

 

随机推荐