安裝appium for window
安裝Node js
下載:java-client.jar
首先安裝appium 安裝完成后在環(huán)境變量path添加"C:\Program Files (x86)\Appium\node_modules\.bin;"
驗證安裝在命令行輸入:appium-doctor
如果出現(xiàn)下圖:表名配置成功
安裝Node js 安裝完畢再環(huán)境變量path 添加安裝路徑“;C:\Program Files\nodejs”
命令行輸入:node -v 如下圖
配置目錄如下:把知乎客戶端命名為zhihu.apk
配置好appium環(huán)境之后,啟動appium 選擇項目的apk ,可以看見apk的package和Activity 如下圖:
怎么去識別APP的元素的,這里用到Android SDK tools 目錄下的工具uiautomatorviewer ,執(zhí)行uiautomatorviewer.bat就可
如下圖:比如登陸按鈕,看到resourceId,就是webdriver的find Element By.id
至于登陸用戶名和密碼,在Android中都是EditText控件,可以使用By.class
完成對象識別,最終代碼如下:
public class AppPPDemo {
private AndroidDriver driver;
@Test
public void addContact() {
App_login login = PageFactory.initElements(driver, App_login.class);
//點擊登錄按鈕
login.login(); //紅色標記部分 是我試驗?zāi)懿荒苡脀ebdriver的FindBy 和PageFactory,試驗成功可以使用 上面封裝的文件就是APP_login.java那個文件,下面會把代碼貼出來
//等待
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
//輸入用戶名和密碼
List<WebElement> text_input = driver.findElementsByClassName("android.widget.EditText");
text_input.get(0).sendKeys("546995529@qq.com");
text_input.get(1).sendKeys("wf1989");
WebElement button=driver.findElement(By.id("android:id/button1"));
button.click();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
WebElement logout_button=driver.findElement(By.className("android.widget.ImageButton"));
logout_button.click();
WebElement logout = driver.findElement(By.id("android:id/title"));
String title = logout.getText();
System.out.println(title);
logout.click();
}
@BeforeMethod
public void beforeMethod() throws MalformedURLException {
//設(shè)置appium,拿到path里面的appium路徑
File classpathRoot = new File(System.getProperty("user.dir"));
System.out.println("class是"+classpathRoot);
//存放APP的目錄
File appDir = new File(classpathRoot,"apps");
System.out.println("appdIR是:"+appDir);
File app = new File (appDir,"zhihu.apk");
DesiredCapabilities zhihu=new DesiredCapabilities();
zhihu.setCapability(CapabilityType.BROWSER_NAME,"");
//deviceName
zhihu.setCapability("deviceName","d6556835");
//安卓機版本號
//capabilities.setCapability(CapabilityType.VERSION, "4.4.2");
//使用的平臺
zhihu.setCapability(CapabilityType.PLATFORM, "WINDOWS");
//獲取app的據(jù)對路徑 getAbsolutePath獲取絕對路徑
// zhihu.setCapability("app",app.getAbsolutePath());
zhihu.setCapability("app-package", "com.zhihu.android");
zhihu.setCapability("app-activity", ".ui.activity.GuideActivity");
driver=new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),zhihu);
}
@AfterMethod
public void afterMethod() {
driver.quit();
}
}
上面封裝的APP_login.java 腳本
public class App_login {
WebDriver driver;
@FindBy(how=How.ID,id="com.zhihu.android:id/login")
WebElement loginbutton;
public App_login(WebDriver driver){
this.driver=driver;
}
@Test
public void login() {
loginbutton.click();
}
}
這個是真機運行腳本,如果想在android模擬器上運行直接用adb devices 命令查看deviceName 替換上面腳本高亮的部分,直接運行就行