安裝appium for window 安裝Node js 下載:java-client.jar 首先安裝appium 安裝完成后在環(huán)境變量path添加"C:\Program Files (x86)\Appium\node_modules\.bin;" 驗(yàn)證安裝在命令行輸入:appium-doctor 如果出現(xiàn)下圖:表名配置成功 ![]() 安裝Node js 安裝完畢再環(huán)境變量path 添加安裝路徑“;C:\Program Files\nodejs” 命令行輸入:node -v 如下圖 ![]() 配置目錄如下:把知乎客戶(hù)端命名為zhihu.apk ![]() 配置好appium環(huán)境之后,啟動(dòng)appium 選擇項(xiàng)目的apk ,可以看見(jiàn)apk的package和Activity 如下圖: ![]() 怎么去識(shí)別APP的元素的,這里用到Android SDK tools 目錄下的工具uiautomatorviewer ,執(zhí)行uiautomatorviewer.bat就可 如下圖:比如登陸按鈕,看到resourceId,就是webdriver的find Element By.id ![]() 至于登陸用戶(hù)名和密碼,在Android中都是EditText控件,可以使用By.class ![]() 完成對(duì)象識(shí)別,最終代碼如下: public class AppPPDemo { private AndroidDriver driver; @Test public void addContact() { App_login login = PageFactory.initElements(driver, App_login.class); //點(diǎn)擊登錄按鈕 login.login(); //紅色標(biāo)記部分 是我試驗(yàn)?zāi)懿荒苡脀ebdriver的FindBy 和PageFactory,試驗(yàn)成功可以使用 上面封裝的文件就是APP_login.java那個(gè)文件,下面會(huì)把代碼貼出來(lái) //等待 driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); //輸入用戶(hù)名和密碼 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"); //安卓機(jī)版本號(hào) //capabilities.setCapability(CapabilityType.VERSION, "4.4.2"); //使用的平臺(tái) zhihu.setCapability(CapabilityType.PLATFORM, "WINDOWS"); //獲取app的據(jù)對(duì)路徑 getAbsolutePath獲取絕對(duì)路徑 // 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(); } } 這個(gè)是真機(jī)運(yùn)行腳本,如果想在android模擬器上運(yùn)行直接用adb devices 命令查看deviceName 替換上面腳本高亮的部分,直接運(yùn)行就行
|
|