Appium环境安装
Appium⽣态⼯具
❖ adb:android的控制⼯具,⽤于获取android的各种数据和控制
❖ Appium Desktop:内嵌了appium server和inspector⼯具的综合⼯具
❖ Appium Server:appium的核⼼⼯具,命令⾏⼯具
❖ Appium client:各种语⾔的客户端封装库,⽤于连接appium server
❖ python
❖ java
❖ ruby
❖ robotframework-appium
❖ AppCrawler ⾃动遍历工具
server端
- 安装nodejs
输入npm version 查看nodejs版本 (cygwin中)
- 命令执行 npm install -g appium
@想用版本
-verbose 可查看下载内容
安装完成
- 启动appium --session-override
运行时遇到的问题与解决方法:
启动appium开始运行时提示:
error
An unknown server-side error occurred while processing the command. Original error: Could not find adb.exe in ...... sdk目录
或 no such file or directory, scandir sdk路径
【解决方法】sdk在配置环境变量时路径错误,ANDROID_HOME只需写到sdk即可。
参考:https://jingyan.baidu.com/article/f0e83a2548461022e5910199.html
创建:
查看当前应用activities
adb shell dumpsys activity activities |less
start session
生成操作的源代码
Java
maven中添加依赖
<dependencies>
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>6.0.0-BETA3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies>
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 org.junit.Test;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.remote.DesiredCapabilities;
public class testerhomeDemo {
private AndroidDriver driver;
@Before
public void setUp() throws MalformedURLException {
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setCapability("appActivity", ".MainActivity");
desiredCapabilities.setCapability("appPackage", "com.testerhome.android");
desiredCapabilities.setCapability("platformName", "Android");
desiredCapabilities.setCapability("deviceName", "T7G0215522010430");
desiredCapabilities.setCapability("noReset","false");
desiredCapabilities.setCapability("fullRest", "true");
URL remoteUrl = new URL("http://127.0.0.1:4723/wd/hub");
driver = new AndroidDriver(remoteUrl, desiredCapabilities);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
@Test
public void sampleTest() {
MobileElement el1 = (MobileElement) driver.findElementByAccessibilityId("MTSC MTSC 第五届移动互联网测试开发大会志愿者招募 MTSC 第五届移动互联网测试开发大会志愿者招募");
el1.click();
MobileElement el2 = (MobileElement) driver.findElementByAccessibilityId("分享");
el2.click();
}
@After
public void tearDown() {
driver.quit();
}
}
python
未调试成功
# This sample code uses the Appium python client
# pip install Appium-Python-Client
# Then you can paste this into a file and simply run with Python
from appium import webdriver
caps = {}
caps["appActivity"] = ".MainActivity"
caps["appPackage"] = "com.testerhome.android"
caps["platformName"] = "Android"
caps["deviceName"] = "T7G0215522010430"
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
driver.implicitly_wait(13)
print("wait")
el1 = driver.find_element_by_accessibility_id("活动沙龙 知乎&TesterHome 第一期质量技术沙龙 | 活动报名 知乎&TesterHome 第一期质量技术沙龙 | 活动报名")
el1.click()
driver.implicitly_wait(10)
print("wait")
el2 = driver.find_element_by_accessibility_id("分享")
el2.click()
el3 = driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.support.v4.view.ViewPager/android.widget.GridView/android.widget.LinearLayout[1]/android.widget.LinearLayout/android.widget.ImageView")
el3.click()
driver.quit()