appium 移动web样例脚本
简单介绍
这是一个使用appium操作移动端chrome浏览器的样例程序。
样例程序
脚本实现的功能是:打开浏览器-->跳转到百度首页-->输入appium-->点击搜索按钮-->如果第一条搜索结果的标题含有appium字符串,那么断言脚本运行成功。
需要注意的是,操作chrome浏览器的方式是:指明chrome安装包的位置及相应的package和activity。
package com.wwh.utils; import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.AndroidMobileCapabilityType;
import io.appium.java_client.remote.AutomationName;
import io.appium.java_client.remote.MobileCapabilityType;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.Assert;
import org.testng.annotations.*; import java.io.File;
import java.net.URL;
import java.util.concurrent.TimeUnit; /**
* Created by wwh on 17/2/24.
*/
public class H5Test {
private AndroidDriver<MobileElement> driver; @BeforeTest
public void Demo() throws Exception {
// set up appium
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.APPIUM);
//for native app set null, for web test please set chrome or firefox
//capabilities.setCapability(CapabilityType.BROWSER_NAME, BrowserType.CHROME);
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
//simulator version 4.4
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
// if no need install don't add this
File classpathRoot = new File("/Users/wwh/IdeaProjects");
File appDir = new File(classpathRoot, "apps");
File app = new File(appDir, "com.android.chrome.1702051940.apk");
// capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath()); //package name
// capabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "com.chrome.dev");
capabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "com.android.chrome");
// // support Chinese
capabilities.setCapability("unicodeKeyboard", "True");
capabilities.setCapability("resetKeyboard", "True");
// no need sign
// capabilities.setCapability("noSign", "True");
//launcher activity
capabilities.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY,
"org.chromium.chrome.browser.webapps.WebappLauncherActivity");
String url = "http://localhost:4723/wd/hub";
driver = new AndroidDriver<MobileElement>(new URL(url), capabilities); } @AfterTest
public void Teardown(){
driver.quit();
} @Test
public void runChromebrowser(){
driver.get("http://www.baidu.com");//打开百度首页
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.findElement(By.xpath("//android.widget.LinearLayout[1]/" +
"android.widget.FrameLayout[1]/android.widget.FrameLayout[1]" +
"/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]" +
"/android.view.View[1]/android.widget.FrameLayout[1]/android.widget" +
".FrameLayout[1]/android.webkit.WebView[1]/android.view.View[1]/" +
"android.view.View[5]/android.widget.EditText[1]")).sendKeys("appium");//输入appium
driver.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]" +
"/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]" +
"/android.view.View[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/" +
"android.webkit.WebView[1]/android.view.View[1]/android.view.View[5]/android.view.View[1]" +
"/android.widget.Button[1]")).click();//点击搜索按钮
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}//因为页面加载完成前,下面的el的xpath会指向另一个页面元素,所以加了2秒等待。
WebElement el = driver.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.view.View[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.webkit.WebView[1]/android.view.View[1]/android.view.View[3]/android.view.View[2]")); String desc = el.getAttribute("contentDescription");
System.out.println("desc: "+desc);
Assert.assertTrue(desc.contains("appium"));//若搜索结果包含appium,则判定成功。
} }
appium 移动web样例脚本的更多相关文章
- Macaca环境配置及样例执行
1.Macaca简介 macaca是由阿里巴巴公司开发的一套自动化解决方案,适用于PC端和移动端.Macaca基于Node.js开发,测试案例编写语言暂时也只支持Node.js. 2.Macaca与A ...
- Android平台调用Web Service:演示样例
近期在学习Android,随着移动设备的流行,当软件走上商业化的道路,为了争夺市场,肯定须要支持Android的,所以開始接触了Android,只是仅仅了解皮毛就好,由于我们要做管理者嘛,懂点Andr ...
- Oracle简单脚本演示样例
Oracle简单脚本演示样例 1.添加表 --改动日期:2014.09.21 --改动人:易小群 --改动内容:新增採购支付情况表 DECLARE VC_STR VARCHAR2( ...
- WEB打印控件Lodop(V6.x)使用说明及样例
WEB打印控件Lodop(V6.x)使用说明及样例 Lodop是专业WEB控件,用它既可裁剪输出页面内容,又可用程序代码生成复杂打印页. 控件功能强大,却简单易用,所有调用如同JavaScript扩展 ...
- 怎样把报表放到网页中显示(Web页面与报表简单集成样例)
1.问题描写叙述 如今用户开发的系统基本上趋向于BS架构的浏览器/server模式.这些系统可能由不同的语言开发.如HTML.ASP.JSP.PHP等.因此须要将制作好的报表嵌入到这些页面中. Fin ...
- Python Web框架Tornado的异步处理代码演示样例
1. What is Tornado Tornado是一个轻量级但高性能的Python web框架,与还有一个流行的Python web框架Django相比.tornado不提供操作数据库的ORM接口 ...
- shell脚本实例-菜单样例
1.9.1 实例需求 用户在进行Linux系统管理的过程中,经常需要用到查看进程的信息.用户的信息等常用的功能.本例针对这一需求,使用shell编程实现基本的系统管理 功能.通过本程序,可以按照要求实 ...
- postman 官方 test 脚本样例
Test examples 样例来源: https://learning.getpostman.com/docs/postman/scripts/test_examples/ Test scripts ...
- jbpm入门样例
1. jBPM的简介 jBPM是JBOSS下的一个开源java工作流项目,该项目提供eclipse插件,基于Hibernate实现数据持久化存储. 參考 http://www.jbos ...
随机推荐
- MFC对话框贴图基础上控件Stasic变成透明的
对应WM_CTLCOLOR函数 加入下面代码: HBRUSH CMFCApplication2Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) ...
- vue vue-router beforeRouteEnter
beforeRouteEnter (to, from, next) { // 在渲染该组件的对应路由被 confirm 前调用 // 不!能!获取组件实例 `this` // 因为当守卫执行前,组件实 ...
- Cocos2d-X中创建菜单项
Cocos2d-X中创建菜单的类: CCMenuItemFont:创建纯文本的菜单项 CCMenuItemAtlasFont:创建带有艺术字体的菜单项 CCMenuItemImage:用图片创建菜单项 ...
- Oracle dos连接数据库基本操作
sqlplus / as sysdba;(sqlplus 用户名/密码@ip:端口:数据库实例 as sysdba;) ;(设置显示多少列,pagesize:;每页多少记录) select * fro ...
- Hbase 认识及其作用
HBase出现的原因: HBase作为面向列的数据库运行在HDFS之上,HDFS缺乏随即读写操作,HBase正是为此而出现.HBase以Google BigTable为蓝本,以键值对的形式存储.项目的 ...
- UIWebView 加载网页、文件、 html
UIWebView 是用来加载加载网页数据的一个框.UIWebView可以用来加载pdf word doc 等等文件 生成webview 有两种方法,1.通过storyboard 拖拽 2.通过al ...
- BIOS截图中文
- 转python调用Go代码
Go 1.5发布了,其中包含了一个特性:可以编译生成动态链接库,经试验,生成的.so文件可以被python加载并调用.下面举个例子: 先写一个go文件main.go: package main imp ...
- PropertyUtils复制BigDecimal异常
PropertyUtils复制BigDecimal会引发异常,要注意
- Android Studio中查看类的继承关系
查看类的继承关系的快捷键F4.在Android Studio经常使用快捷键这篇文章中.有写了.今天主要是讲一些关于这个快捷键出来的界面的一些配置.这块功能相对偏冷一些,可能非常多人都会用不到.可是关于 ...