appium在Javaweb项目的搭建
来源:互联网 发布:java api接口签名验证 编辑:程序博客网 时间:2024/06/04 19:44
需要的jar
<!-- appium --><dependency><groupId>io.appium</groupId><artifactId>java-client</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-server-standalone</artifactId><version>2.53.0</version></dependency><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>2.53.1</version></dependency>
import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.net.URL;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import java.util.Map;import javax.imageio.ImageIO;import org.apache.commons.io.FileUtils;import org.openqa.selenium.By;import org.openqa.selenium.OutputType;import org.openqa.selenium.WebDriverException;import org.openqa.selenium.WebElement;import org.openqa.selenium.remote.CapabilityType;import org.openqa.selenium.remote.DesiredCapabilities;import io.appium.java_client.TouchAction;import io.appium.java_client.android.AndroidDriver;import io.appium.java_client.android.AndroidKeyCode;import io.appium.java_client.android.AndroidKeyMetastate;public class AppiumTest {public static AndroidDriver driver; // 驱动对象,大家注意,由于新版的APPIUM对驱动做了改动,所以这里就不能再用以前的WEBDRIVER来实现了;private static String apkName = "APP_.apk"; // 安卓的安装包,被测软件private static String platformVersion = "7.1.2";// 安卓模拟器的版本private static String serverURL = "http://127.0.0.1:4723/wd/hub";// appium测试服务的地址private static String deviceName = "10.100.22.252:5555";// 指定设备,private static String bundleId = "com.……";// 对应app的应用包public static void main(String[] args) throws IOException, InterruptedException {// 新建一个DesiredCapabilities对象,是importorg.openqa.selenium.remote.DesiredCapabilities;作者个人赶脚是用来收集驱动初始化信息用的;DesiredCapabilities capabilities = new DesiredCapabilities();capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); // 指定浏览器的名字,我们测试的是APK所以没有浏览器,故而为空;capabilities.setCapability("platformName", "Android"); // 指定平台,为安卓capabilities.setCapability("deviceName", deviceName); // 指定设备,capabilities.setCapability("platformVersion", platformVersion); // 指定版本,File classpathRoot = new File(System.getProperty("user.dir"));// 获得项目路径File appDir = new File(classpathRoot, "apps");// 获得APK所在文件夹名称File app = new File(appDir, apkName);// 获得APK文件capabilities.setCapability("app", app.getAbsolutePath()); // 指定需要测试的APK,也就是需要安装的APK文件;capabilities.setCapability("autoLaunch", "false"); // Appium是否需要自动安装和启动应用。// support Chinesecapabilities.setCapability("unicodeKeyboard", "True");capabilities.setCapability("resetKeyboard", "True");// no need signcapabilities.setCapability("noSign", "True");// 核心关键步骤,创建驱动,指定服务地址,和初始化信息;driver = new AndroidDriver<>(new URL(serverURL), capabilities);// System.out.println(driver);// driver.navigate().forward(); // 前进// driver.navigate().back(); // 后退// driver.navigate().refresh(); // 刷新// driver.launchApp();// driver.closeApp();; // 关闭// driver.quit();; // 退出// java 检查应用是否已经安装// System.out.println(driver.isAppInstalled(bundleId));// if (driver.isAppInstalled(bundleId)) {// // 从设备中删除一个应用// driver.removeApp(bundleId);// }// // java 安装应用到设备中去// driver.installApp(app.getAbsolutePath());// driver.launchApp();// Thread.sleep(2000);// driver.findElementByXPath("//*[contains(@text,'取消')]").click();// Thread.sleep(1000);// driver.findElementByXPath("//*[contains(@text,'帐号登录')]").click(); List<WebElement> findElementsById = driver.findElementsById("com.miui.home:id/icon_icon"); findElementsById.get(1).click();// Thread.sleep(2000);// jietu();// Thread.sleep(1000);// driver.findElementByXPath("//*[contains(@text,'授权并登录')]").click();// driver.findElementById("com.ximalaya.ting.android:id/main_btn_sso_authorize").click();// Thread.sleep(2000);// jietu();// Thread.sleep(1000);// driver.findElementById("com.orion.xiaoya.speakerclient:id/view_guide1").click();// Thread.sleep(2000);// jietu();// Thread.sleep(1000);// driver.findElementById("com.orion.xiaoya.speakerclient:id/view_guide2").click();// Thread.sleep(2000);// jietu();//// Thread.sleep(1000);//String text = driver.findElementByAccessibilityId("com.orion.xiaoya.speakerclient:id/tv_content").getText();// System.out.println(text);// Thread.sleep(2000);// driver.findElementByXPath("//*[contains(@text,'技能')]").click();// Thread.sleep(2000);// jietu();//// Thread.sleep(1000);// List<WebElement> findElementsByClassName =// driver.findElementsByClassName("android.widget.RelativeLayout");//// System.out.println(findElementsByClassName.size());// findElementsByClassName.get(1).click();// Thread.sleep(2000);// jietu();//// Thread.sleep(1000);// driver.findElementByXPath("//*[contains(@text,'立即进入')]").click();// Thread.sleep(2000);// jietu();//// Thread.sleep(1000);// driver.findElementByXPath("//*[contains(@text,'添加')]").click();// Thread.sleep(2000);// jietu();//// Thread.sleep(1000);// driver.findElementByClassName("android.widget.EditText").sendKeys("呵呵哒");// Thread.sleep(2000);// jietu();//// Thread.sleep(1000);// driver.findElementByXPath("//*[contains(@text,'下一步')]").click();// Thread.sleep(2000);// jietu();//// Thread.sleep(1000);// driver.findElementByXPath("//*[contains(@text,'我说')]").click();// Thread.sleep(2000);// jietu();//// Thread.sleep(1000);// driver.findElementByClassName("android.widget.EditText").sendKeys("呵呵哒");// Thread.sleep(2000);// jietu();//// Thread.sleep(1000);// driver.findElementByXPath("//*[contains(@text,'生成')]").click();// Thread.sleep(2000);// jietu();// Thread.sleep(1000);// driver.pressKeyCode(AndroidKeyCode.HOME);//物理按键// driver.findElementByXPath("//android.widget.TextView[contains(@text,'关闭')]").click();;// driver.findElementByXPath("//android.view.View[contains(@content-desc,'手机快捷登录')]").click();;// WebElement findElementByXPath =// driver.findElementByXPath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.webkit.WebView[1]/android.webkit.WebView[1]/android.view.View[1]/android.view.View[2]/android.view.View[1]/android.view.View[1]/android.widget.EditText[1]");// System.out.println(findElementByXPath.getText());// WebElement findElementByXPath =// driver.findElementByXPath("//*[@text='请输入您的账号']");//System.out.println(driver.getPageSource());//获取当前页面的源码// findElementByXPath.sendKeys("17744590115");// List<WebElement> findElementsByClassName =// driver.findElementsByClassName("android.widget.EditText");// driver.findElementByName("请输入您的账号").sendKeys("asd");// findElementsByClassName.get(0).sendKeys("17744590115");// Thread.sleep(1000);// findElementsByClassName.get(1).sendKeys("150283");// driver.swipe(75, 500, 75, 0, 200);//滑动// driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);// Set contextHandles = driver.getContextHandles();// System.out.println(contextHandles);// String context = driver.getContext();// System.out.println(context);// WebElement ById =// driver.findElementById("com.orion.xiaoya.speakerclient:id/other_weather_layout");// ById.click();// WebElement ByIds = driver.findElementById("com.miui.home:id/icon_icon");// ByIds.click();// WebElement findElement =// driver.findElement(By.id("com.orion.xiaoya.speakerclient:id/other_weather_layout"));// findElement.// driver.get// WebElement webElement = findElements.get(1);// swipeToUp(driver, 500,1,1);// swipeToRight(driver, 500,1,1);// swipeToLeft(driver, 500,1,1);// Map appStringMap = driver.getAppStringMap();// System.out.println(appStringMap);}//截图public static void jietu() {try {// 获取screenshot文件File screenShot = driver.getScreenshotAs(OutputType.FILE);// 文件copy到指定的文件夹FileUtils.copyFile(screenShot, new File(System.getProperty("user.dir") + File.separator + "img"+ File.separator + new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss").format(new Date()) + ".jpg"));} catch (WebDriverException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * 上滑 * * @param driver * appium驱动 * @param during * 这里是填写毫秒数,这里的 毫秒数越小 滑动的速度越快~ 一般设定在500~1000 * @param num * 滑动的次数 * @param spacing * 滑动的间隔 */public static void swipeToUp(AndroidDriver driver, int during, int num, int spacing) {int width = driver.manage().window().getSize().width;int height = driver.manage().window().getSize().height;for (int i = 0; i < num; i++) {driver.swipe(width / 2, height * 3 / 4, width / 2, height / 4, during);goSleep(spacing);}}/** * 下拉 * * @param driver * appium驱动 * @param during * 这里是填写毫秒数,这里的 毫秒数越小 滑动的速度越快~ 一般设定在500~1000 * @param num * 滑动的次数 * @param spacing * 滑动的间隔 */public static void swipeToDown(AndroidDriver driver, int during, int num, int spacing) {int width = driver.manage().window().getSize().width;int height = driver.manage().window().getSize().height;System.out.println(width);System.out.println(height);for (int i = 0; i < num; i++) {driver.swipe(width / 2, height / 4, width / 2, height * 3 / 4, during);goSleep(spacing);}}/** * 向左滑动 * * @param driver * appium驱动 * @param during * 这里是填写毫秒数,这里的 毫秒数越小 滑动的速度越快~ 一般设定在500~1000 * @param num * 滑动的次数 * @param spacing * 滑动的间隔 */public static void swipeToLeft(AndroidDriver driver, int during, int num, int spacing) {int width = driver.manage().window().getSize().width;int height = driver.manage().window().getSize().height;for (int i = 0; i < num; i++) {driver.swipe(width * 3 / 4, height / 2, width / 4, height / 2, during);goSleep(spacing);}}/** * 向右滑动 * * @param driver * appium驱动 * @param during * 这里是填写毫秒数,这里的 毫秒数越小 滑动的速度越快~ 一般设定在500~1000 * @param num * 滑动的次数 * @param spacing * 滑动的间隔 */public static void swipeToRight(AndroidDriver driver, int during, int num, int spacing) {int width = driver.manage().window().getSize().width;int height = driver.manage().window().getSize().height;for (int i = 0; i < num; i++) {driver.swipe(width / 4, height / 2, width * 3 / 4, height / 2, during);goSleep(spacing);}}/** * 等待时间 * * @param i */private static void goSleep(int i) {try {Thread.sleep(i * 1000);} catch (InterruptedException e) {e.printStackTrace();}}
这些是在做appium试验时的测试类,可以自己按需要改造一下
阅读全文
0 0
- appium在Javaweb项目的搭建
- appium在windows的搭建
- appium在mac上的环境搭建
- APPIUM在Win7环境下的搭建
- Appium在Mac环境的搭建
- JavaWeb用户登陆--项目环境的搭建
- 搭建JavaWeb项目时出现的问题
- 搭建Maven环境下的JAVAWeb项目
- eclipse javaWeb项目的环境搭建
- APPium的环境搭建
- 搭建javaweb项目
- javaWeb服务器在linux上的搭建
- 使用Intellij ide在Azure上搭建JavaWeb项目
- SpringMVC 项目框架的搭建(javaweb项目)
- appium搭建及要求---在 Mac 上配置 Appium
- 最基本的javaweb项目环境的搭建
- 搭建JavaWeb项目资料整理
- win7搭建javaweb项目环境过程及遇到的问题
- OCR开源库(文本区域定位和文本识别):github
- C/C++ 第八周串和数组 (一)顺序串算法 项目2—(二)
- 京东JData算法大赛-高潜用户购买意向预测(github源码)
- 第十五周 项目3-归并排序算法的改进
- js普通文本转富文本
- appium在Javaweb项目的搭建
- 草根seo站长增加收入的实用方法
- Pickle:UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
- mybatis 分页插件
- 团体程序设计天梯赛-练习集 L1-046. 整除光棍
- 开发一个基于React Native的简易demo--读取网络数据并展示
- DSP开发的一点概念
- Servlet中不用sping注入原因和解释
- Samba案例