Appium+Java环境搭建及简单实例

Appium+Java环境搭建及简单实例

一、下载jdk并配置好环境
二、下载Android-sdk并配置好环境
三、下载Eclipse软件

四、下载Node.js
下载地址:https://nodejs.org/en/download/,或者云盘上下载:node-v12.16.3-x64.msi
在这里插入图片描述
傻瓜式安装即可,如果改变的安装路径,需要要配置npm参数,把命令当中的路径换成实际路径,打开cmd,操作如下:
npm config set prefix=“D:\Program Files\nodejs\node_global”
npm config set cache=“D:\Program Files\nodejs\node_cache”
npm config set init-module=“D:\Program Files\.npm-init.js”
npm config set registry=“https://registry.npm.taobao.org/”
npm config set tmp=“D:\Program Files\Temp”
npm config set userconfig=“D:\Program Files\.npmrc”
安装完成后进行验证,cmd:node -v
在这里插入图片描述
五、Appuim下载
Appium 目前托管在github,正确的Appuim下载地址:https://github.com/appium/appium-desktop/releases/tag/v1.12.1,或者云盘上下载
*安装完成后,需要配置路径,将node_modules.bin目录放到系统path环境下,即将路径D:\Program Files (x86)\Appium\node_modules.bin添加到环境变量path中去。 *(视情况而定,本次实验未做此操作)

在这里插入图片描述
选中第一个desktop桌面版的,有元素定位、录制等操作。

cmd下执行命令npm install -g appium-doctor (视情况而定,此实验未做此操作)
六、Appium操作
1、启动程序,点击下方按钮启动软件
在这里插入图片描述
2、显示启动成功,点击红圈启动检查器会话
在这里插入图片描述
在这里插入图片描述
3、启动adb,检查是否有设备接入
在这里插入图片描述
4、查看appium启动的页面,并在右下角编辑输入需要的信息,保存,左上角选中自动启动服务。页面效果如下:
其中需要填入的信息如下:
“platformName”: “Android”, #系统
"platformVersion ": “10”, #系统版本
“deviceName”: “xx”, #手机名称
“appPackage”: “xx.xx.xxxt”, #软件安装包Package
“appActivity”: “xx.xx.xxxxxxxx”#软件安装包Activity
“App”: “D:\xx.apk” #手机安装包路径,如果手机有安装,可以不添加
在这里插入图片描述
5、点击右下角启动session,此时手机端要保证可以安装程序Appium Setting,
在这里插入图片描述
6、启动后页面效果如下,其中最上方红圈为录制操作,红圈最左侧的向右的箭头是滑动操作,右侧的红圈为点击发送事件操作:
在这里插入图片描述
7、启动录制后,点击右上角展示详细代码:
在这里插入图片描述

七:Eclipse+java操作
1、启动Eclipse软件,并创建java project项目,创建JUnit Test Case,选择junit 4,并在完成的时候导入所有的junit 4 的包
在这里插入图片描述
2、编写代码前导入三个jar包,云盘上有,也可http://selenium-release.storage.googleapis.com/index.html这里下载
在这里插入图片描述
3、可以自己编写代码,可以复制录制操作的代码,如下:

import static org.junit.Assert.*;

import org.junit.Test;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.Sleeper;

public class appium {

  private AndroidDriver driver;

  @Before
  public void setUp() throws MalformedURLException {
    DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
    desiredCapabilities.setCapability("platformName", "Android");
    desiredCapabilities.setCapability("platformVersion", "10");
    desiredCapabilities.setCapability("deviceName", "XXXXXXXXXXXXX");
    desiredCapabilities.setCapability("appPackage", "com.android.deskclock");
    desiredCapabilities.setCapability("appActivity", "com.android.deskclock.AlarmsMainActivity");

    URL remoteUrl = new URL("http://localhost:4723/wd/hub");

    driver = new AndroidDriver(remoteUrl, desiredCapabilities);
    System.out.println("程序启动");
  }

  @Test
  public void sampleTest() throws InterruptedException {
    MobileElement el1 = (MobileElement) driver.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout[2]/android.widget.RelativeLayout[1]/android.widget.ListView/android.widget.FrameLayout[1]/android.widget.RelativeLayout/android.widget.RelativeLayout[2]/android.widget.Switch");
    el1.click();
    Thread.sleep(1000);
    MobileElement el2 = (MobileElement) driver.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout[2]/android.widget.RelativeLayout[1]/android.widget.ListView/android.widget.FrameLayout[2]/android.widget.RelativeLayout/android.widget.RelativeLayout[2]/android.widget.Switch");
    el2.click();
    Thread.sleep(1000);
    System.out.println("程序执行完成");
  }

  @After
  public void tearDown() {
    driver.quit();
    System.out.println("已退出程序");
  }
}
	

在这里插入图片描述
4、如手机端未安装apk,可在项目中创建app存放的文件夹,aa,并在@before中加入代码:

		// 获取当前程序的路径
		File classpathRoot = new File(System.getProperty("user.dir"));
		// 获取apps文件
		File appDir = new File(classpathRoot, "app存放的文件夹名称");
		// 获取apk文件
		File app = new File(appDir, "xx.apk");//apk名称

5、启动程序中可加入捕获异常操作:

		try {
			driver = new AndroidDriver<>(new URL("http://localhost:4723/wd/hub"), desiredCapabilities);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}

在这里插入图片描述
6、可参照类似于selenium的api进行元素获取并操作:

WebElement xx = driver.findElement(By.id("xx"));
xx.click();

7、每次运行不安装app

capabilities.setCapability("noReset", "true");
capabilities.setCapability("fullReset", "false");

每次运行不安装app,Python代码类似

caps["noReset"]="true";
caps["fullReset"]="false";

8、允许中文输入

capabilities.setCapability("unicodeKeyboard", "true");
capabilities.setCapability("resetKeyboard", "true");

9、若真机app启动失败,可以考虑是否是安装包加固引起的,可采用方法是不让appium对apk进行重签名

capabilities.setCapability("noSign","true") 

python类似:

caps["noSign"]="true";
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章