Appium环境搭建
作者介绍
我叫邓文博,我有梦想!
原理你懂吗?
从appium的客户端,appium服务端,安卓或iOS的移动端我们都要配置好,配置好之后,就开干!
Java环境配置
- JAVA_HOME配置:JAVA_HOME D:\tool\Java\jdk1.8.0_171
jdk官网下载
- Path配置 :Path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
- Java验证 :java -version
Android环境配置
- ANDROID_HOME配置 D:\tool\Android\android-sdk
- Path配置 D:\tool\Android\android-sdk\tools;D:\tool\Android\android-sdk\platform-tools;
- Android验证
Appium相关组件安装卸载
Appium命令行安装和卸载步骤
1.先安装Node.js 当前版本 node-v8.12.0-x64.msi,官网下载安装Node.js官网
- node --version验证,如果失败,就去配置Node环境变量
2.安装 .NET framework4.5 .NET framework各版本下载
3.安装Appium服务 - (不推荐:无桌面程序)cmd 命令安装 npm install -g appium
- (推荐:有桌面程序)下载这个appium-desktop-setup-1.8.0.exe
- 要验证Appium的所有依赖项是否满足,可以使用appium-doctor。用npm install -g appium-doctor,然后运行appium-doctor命令,提供–ios或–android标志以验证所有依赖项的设置是否正确。
- appium 服务启动方式 cmd 命令appium
-Appium 服务卸载
-cmd命令npm ? 帮助信息获取(npm支持的命令)
Appium实例演示
1.连接设备
- 创建模拟器,下载安装启动夜神模拟器
-cmd命令验证adb是否连接成功模拟器 adb devices,如果显示如下,则没有连接,我们需要命令连接,adb connect 127.0.0.1:62001(夜神模拟器的默认端口),并重新验证
2. appium客户端的搭建和脚本的编写
appium,你猜支持多少个客户端脚本语言?8种哦!
JS-Client(Node.js)
- cmd安装webdriverio(web driver input output{就是web http通信工具O(∩_∩)O哈哈~)
- npm install webdriverio
- 创建js文件
- 准备好测试用例,准备测试
- 启动Appium服务,两种方式,1.cmd命令启动,2.桌面应用程序启动
- cmd执行node <用例路径>
- 当你看到appium中打印日志,模拟器或者设备执行并安装了apk或者ipa程序,并且出现自动测试动作,说明已经成功了,只需要在脚本中编写需要的测试行为,就可以实现自动化了!
Java-Client
- 先准备java开发环境,集成appium-java-client
- Inteillij idea 创建maven项目,不需要点击模板
-先集成java-client与单元测试testng包
- appiumtest测试类的内容为:
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
public class appiumtest {
public AppiumDriver driver;
@BeforeClass
public void startTest() throws MalformedURLException {
File appDir = new File("E:\\yanxuan-aos_pd_8.apk");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformVersion", "4.4.2");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("deviceName", "127.0.0.1:62001");
capabilities.setCapability("unicodeKeyboard", "true");//键盘支持汉字输入
capabilities.setCapability("resetKeyboard", "true");//支持重置键盘
capabilities.setCapability("automationName", "appium");
capabilities.setCapability("app", "E:\\yanxuan-aos_pd_8.apk");
capabilities.setCapability("appPackage", " com.netease.yanxuan");
capabilities.setCapability("appActivity", "com.netease.yanxuan.module.mainpage.activity.MainPageActivity");
AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);//请求等待时间设置
}
@Test
public void test1(){
driver.findElementByName("分类").click();
}
@AfterClass
public void teardown(){
driver.quit();//驱动退出,线程杀掉
}
}
- 准备好了,我们启动appium服务,启动appium
-ok,完成,脚本需要你们自己去开发了,加油!
Python-Client
- 创建pyhton文件
import os
import unittest
from appium import webdriver
from time import sleep
# Returns abs path relative to this file and not cwd
PATH = lambda p: os.path.abspath(
os.path.join(os.path.dirname(__file__), p)
)
class ContactsAndroidTests(unittest.TestCase):
def setUp(self):
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4.2'
desired_caps['deviceName'] = '127.0.0.1:62001'
desired_caps['app'] = PATH(
'E:\\sample-code-master\\sample-code-master\\sample-code\\apps\\ContactManager\\ContactManager.apk'
)
desired_caps['appPackage'] = 'com.example.android.contactmanager'
desired_caps['appActivity'] = 'com.example.android.contactmanager.ContactManager'
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
def tearDown(self):
self.driver.quit()
def test_add_contacts(self):
el = self.driver.find_element_by_accessibility_id("Add Contact")
el.click()
textfields = self.driver.find_elements_by_class_name("android.widget.EditText")
textfields[0].send_keys("Appium User")
textfields[2].send_keys("someone@appium.io")
self.assertEqual('Appium User', textfields[0].text)
self.assertEqual('someone@appium.io', textfields[2].text)
self.driver.find_element_by_accessibility_id("Save").click()
# for some reason "save" breaks things
alert = self.driver.switch_to_alert()
# no way to handle alerts in Android
self.driver.find_element_by_android_uiautomator('new UiSelector().clickable(true)').click()
self.driver.press_keycode(3)
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(ContactsAndroidTests)
unittest.TextTestRunner(verbosity=2).run(suite)
- 启动appium服务
- cmd执行py文件
- 脚本已执行完成!