很多app的都有访问手机相册,然后发送图片的功能。这个功能也是比较常测试的一点。一般来说,点开手机相册,就有的相册的缩略图。如下图所示:

这种缩略图,在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
注,这边说的是两种方式,只要选择其中的就好了。
下面列出主要代码:

获取图片的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();

    }
}

在appium的官方文档上,其实也谈到一个方法。
http://appium.io/docs/en/advanced-concepts/image-elements/
driver.findElementByImage(String Base64Code)。
也提到了返回的图片元素只能进行
click
isDisplayed
getSize
getLocation
getLocationInView
getElementRect
上述的操作,而不能进行别的类似sendKeys操作等。

转载于:https://www.cnblogs.com/NaCl/p/11115920.html

Appium 发送发送本机相册的图片相关推荐

  1. jbook移植完毕后发现订阅时发送的连接不能用,图片显示不出来。

    解决方法:jbook setup后台有填写域名的地方,移植的时候要注意更改(更改后立即生效,不用重启),否则订阅时发送的连接不能用,图片显示不出来.如图,更改红色区域域名.

  2. 详细介绍如何从0开始写一个数据通信,将数据从单片机发送到上位机(或者虚拟示波器)进行数据或图像显示,以及常见问题或注意事项解答,本文主要以匿名上位机为例,适合新手和小白

      本文主要内容:详细介绍如何从0开始写一个数据通信,将数据从单片机发送到上位机(或者虚拟示波器)进行数据或图像显示,帮助我们调节一些参数,比如电机PID的调节.波形融合等,以及在我们写通信协议的时候 ...

  3. Android 调用系统打开相机,打开相册获取图片路径

    我们在开发中经常遇到一些功能需要调取系统相机拍照获取图片,或者有的时候直接打开图库获取图片,那我们怎么获取呢,今天分享下, 第一步,打开相机 public static final int CAMER ...

  4. linux 相册管理,图片管理(时间线、相册管理)- 深度看图 -Deepin深度系统用户手册...

    图片管理 在图片管理界面,您可以通过时间线和相册来管理您的图片. 时间线管理 时间线中的图片按照日期划分,将同一天的图片显示在一起,不同日期的图片分栏排列,最新的日期在最上方. 预览图缩放 通过拖动界 ...

  5. Android 拍照、从相册选择图片

    在做Android图片上传功能的时候,获取图片的途径一般都有两种:拍照.从相册选择. 一.拍照 调用相机拍照有两种方法: 直接返回图片. 在调用相机的时候,传入uri,拍照后通过该uri来获取图片. ...

  6. iOS上传头像, 相册权限,相册权限,拍照上传,相册选择图片,拍照页面语言设置,保存到相册...

    2019独角兽企业重金招聘Python工程师标准>>> 1. 权限 在打开相机拍照或者打开相册选择图片之前, 有必要先判断先是否有权限, 如果没有权限应该给个提示, 让用户自己去设置 ...

  7. iOS 从相机或相册获取图片并裁剪

    /load user image - (void)UesrImageClicked { UIActionSheet *sheet; // 判断是否支持相机 if([UIImagePickerContr ...

  8. sendmail发送html邮件,尝试使用sendmail发送/发送html电子邮件,但显示电子邮件的源代码...

    我试图在PHP中发送HTML电子邮件,但它始终显示电子邮件程序中电子邮件的源代码.但它应该将html电子邮件呈现为html,而不是将源代码显示为电子邮件内容.尝试使用sendmail发送/发送html ...

  9. MUI 拍照和从系统相册选择图片上传

    要完成用MUI 拍照和从系统相册选择图片上传的功能,可以理解成有三个功能 1 调用手机相机的功能(可以查看官方API  http://www.html5plus.org/doc/zh_cn/camer ...

最新文章

  1. 获取地区html代码,根据ip地址获取所在城市信息(省市县)代码
  2. Java获取yahoo天气预报
  3. FE之DR之线性降维:PCA/白化、LDA算法的数学知识(协方差矩阵)、相关论文、算法骤、代码实现、案例应用等相关配图之详细攻略
  4. Direct3D 11.1新特性曝光
  5. vue后端必须接口吗_前后端分离模式,后端说开发完才能给接口文档,合理吗
  6. 机器学习之PCA原理
  7. 下一个十年:练好内功被集成的弹性计算
  8. Linux系统管理(11)——linux下jdk的安装及环境变量配置
  9. JavaScript-输入输出语法
  10. Mybatis(动态SQL大全)
  11. excel辅助列巧妙运用完成工资条的制作
  12. CSS背景颜色、背景图片、背景填充
  13. 银河麒麟操作系统常用问题及解决方法
  14. 条件概率公式、全概率公式以及贝叶斯公式
  15. 二进制数与二进制、十进制互化
  16. ningx突然403权限拒绝解决方案
  17. java读写二进制文件 移动指针 seek_文件与文件夹操作
  18. 五脏六腑在脸上的反射区图片_面部五脏反射穴位图
  19. 【目标检测】概念理解:region proposal、bounding box、anchor box、ground truth、IoU、NMS、RoI Pooling
  20. mc服务器怎么传送到我位置,我的世界联机怎么传送到队友身边_我的世界联机怎么传送到队友位置哪里身边手机版_攻略...

热门文章

  1. originos系统和鸿蒙系统哪个好用,originos和emui11哪个好用 originos和emui11使用对比...
  2. 2022.2.20考研出分最后一夜
  3. 在openssl中对SM2的公私钥进行加解密的验证
  4. MS-TCT:InriaSBU提出用于动作检测的多尺度时间Transformer,效果SOTA!已开源!(CVPR2022)...
  5. PL/SQL登录Oracle数据库提示“无监听程序”解决办法
  6. Android实现发短信,打电话
  7. 信噪比SNR、符号信噪比Es/N0与比特信噪比Eb/N0的关系
  8. Mysql数据库——DQL数据查询语言
  9. Netflix 增长的逻辑——第二曲线(混沌2018年度大课笔记1)
  10. 大学生闲置物品交易平台UML建模