Appium 發送發送本機相冊的圖片

不少app的都有訪問手機相冊,而後發送圖片的功能。這個功能也是比較常測試的一點。通常來講,點開手機相冊,就有的相冊的縮略圖。以下圖所示:
java

這種縮略圖,在appium是找不到任何定位。xpath也沒有。在下面的狀況下,該如何選擇該圖片,進行發送呢。解決的方案來自於這篇博客
https://appiumpro.com/editions/32
appium1.7引入了根據圖片策略來定位元素。傳入圖片的base64位編碼,而後引入opencv(開源視圖處理庫來匹配圖片元素。
首先咱們要作的是安裝opencv4nodejs庫。opencv4nodejs庫的介紹以下https://www.npmjs.com/package/opencv4nodejs
安裝的步驟按照這個連接:https://gist.github.com/adwellj/61e7f202bcfe5b96f312293e9c812ca6
注,這邊說的是兩種方式,只要選擇其中的就行了。
下面列出主要代碼:node

獲取圖片的Base64編碼:
public String getPictureImageB64() throws URISyntaxException,IOException{
String ImageName="picturetest02.jpg";
URL refImgUrl=getClass().getClassLoader().getResource(ImageName);
File refImgFile=Paths.get(refImgUrl.toURI()).toFile();
return Base64.getEncoder().encodeToString(Files.readAllBytes(refImgFile.toPath()));
}
將Base64編碼變成對應的appium中MobileBy(MobileBy須要java-clinet7.0 以上的版本,須要更新客戶端庫。
By imageBy=MobileBy.image(getPictureImageB64());
這裏只須要將你所要選擇圖片放到項目的resources文件夾便可。上述代碼就能夠找到。
appium定位元素位置:
public void SelectImageElement(AndroidDriver driver,By ImageBy){
WebDriverWait wait=new WebDriverWait(driver,10);
AndroidElement androidElement=null;
wait.until(ExpectedConditions.presenceOfElementLocated(ImageBy)).click();
android

}
}

在appium的官方文檔上,其實也談到一個方法。
http://appium.io/docs/en/advanced-concepts/image-elements/
driver.findElementByImage(String Base64Code)。
也提到了返回的圖片元素只能進行
click
isDisplayed
getSize
getLocation
getLocationInView
getElementRect
上述的操做,而不能進行別的相似sendKeys操做等。git

相關文章
相關標籤/搜索