经过一天环境的安装:就可以开始运行我们的测试代码了,在运行之前插一段话。
因为个人是windows 电脑,而sdk 默认是安装在c盘个人目录吓得appdata中的,导致我的c盘瞬间爆炸,那么我们可以在安装时候指定sdk 安装目录,中度强迫症患者,就喜欢将所有安装的文件应用放在自己指定的盘符下,细细的划分。
接下来,我们就要测试整套环境是否正常运行。
Python 篇
1、安装python-client
pip install Appium-Python-Client
2、运行测试代码
首先启动 Android Emulator(这里需要重点说明下,当前appium版本windows上支持到6.0版本,而mac上只支持到 5.1版本,因此我们在创建Android虚拟机时候,api 版本控制在当前appium支持的最高版本内),
然后启动 appium 并且设置appium 中的platformVersion 对应当前驱动的版本。不然可能会报错!
启动pycharm 创建 测试代码:
import time
from appium import webdriver
desired_caps = {'platformName': 'Android', 'platformVersion': '6.0', 'deviceName': 'Android Emulator',
'appPackage': 'com.android.calculator2', 'appActivity': '.Calculator'}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.find_element_by_name("1").click()
driver.find_element_by_name("5").click()
driver.find_element_by_name("9").click()
driver.find_element_by_name("delete").click()
driver.find_element_by_name("9").click()
driver.find_element_by_name("5").click()
driver.find_element_by_name("+").click()
driver.find_element_by_name("6").click()
driver.find_element_by_name("=").click()
print(driver.find_element_by_id("com.android.calculator2:id/formula").text)
time.sleep(2)
driver.quit()
完美运行!
Java 篇
1、安装Java-client
<!--app UI 自动化基础依赖-->
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>6.1.0</version>
</dependency>
我们在测试代码时候紧紧需要该依赖即可运行。(之前也因为其他原因测试代码跑不起来,看到网上说要添加各种依赖,最终发现原因:或因我的代码有问题,或因我们的devices 版本有问题,或因我们的Appium 环境设置出错导致的,仔细查看错误原因,终会解决!)配置有问题的,可以看前两章内容,也可以留言。
2、运行测试代码
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.MalformedURLException;
import java.net.URL;
public class JSJTest {
public static void main(String[] args) throws MalformedURLException, InterruptedException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName","Android Emulator");
capabilities.setCapability("platformVersion", "6.0");
capabilities.setCapability("platformName","Android");
capabilities.setCapability("appPackage", "com.android.calculator2");
capabilities.setCapability("appActivity", ".Calculator");
// 该 处需要注意,我们使用的appium 实现appUI 自动化,创建driver 对象时候,
// 建议指定父类 WebDriver 对象,来实现AppiumDriver或者AndroidDriver,
// 因为AndroidDriver 继承了AppiumDriver类,而AppiumDriver 又间接继承RemoteWebDriver类,
// 该类实现了WebDriver 类,
// 以下三种创建驱动都可以运行,但个人建议第三种
// AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
// WebDriver driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
WebDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.findElement(By.name("1")).click();
driver.findElement(By.name("5")).click();
driver.findElement(By.name("9")).click();
driver.findElement(By.name("delete")).click();
driver.findElement(By.name("+")).click();
driver.findElement(By.name("6")).click();
driver.findElement(By.name("=")).click();
Thread.sleep(2000);
String result = driver.findElement(By.id("com.android.calculator2:id/formula")).getText();
System.out.println(result);
driver.quit();
}
}
在这里特殊说明下Desired Capabilities:
Desired Capabilities在启动 session 的时候是必须提供的。客户端将这些值发送给appium Server 告诉它,我们的设备情况,比如:
- deviceName:启动哪种设备,是真机还是模拟器?iPhone Simulator,iPad Simulator,iPhone Retina 4-inch,Android Emulator,Galaxy S4...
- automationName:使用哪种自动化引擎。appium(默认)还是Selendroid。
- platformName:使用哪种移动平台。iOS, Android, orFirefoxOS。
- platformVersion:指定平台的系统版本。例如指的Android平台,版本为5.1。
- appActivity:待测试的app的Activity名字。比如MainActivity、.Settings。注意,原生app的话要在activity前加个"."。
- appPackage:待测试的app的Java package。比如com.example.android.myApp, com.android.settings。