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()