Appium 元素被覆盖,怎么能够点击到这个元素?

李婷 · 2015年04月28日 · 最后由 李海燕 回复于 2016年12月20日 · 2123 次阅读


发布范围和阅览记录是点击 “更多” 按钮出现的浮窗,可是浮窗元素好像被覆盖了,找不到发布范围和阅览记录这两个元素,这是在真机上出现的问题,虚拟器上没有这个问题,该怎么解决?求指点

共收到 14 条回复 时间 点赞
TestUtil.waits();
            JavascriptExecutor js = (JavascriptExecutor)driver;
            HashMap<String,Integer> tapObject = new HashMap<String,Integer>();
//          tapObject.put("tapCount", new Double(2));
            tapObject.put("touchCount", 1);  
            tapObject.put("duration", 1);  
            tapObject.put("x", 817);
            tapObject.put("y", 285);
            js.executeScript("mobile : tap", tapObject);

我用这段代码通过坐标来点击,但是会抛出下面异常
org.openqa.selenium.WebDriverException: Not yet implemented. Please help us: http://appium.io/get-involved.html (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 32 milliseconds
Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:11:15'
System info: host: 'qytx0819-PC', ip: '10.200.10.252', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_45'
Session ID: 9994974b-7f0b-45af-b23c-00dbf9dfe4aa
Driver info: io.appium.java_client.AppiumDriver
Capabilities [{platform=LINUX, app=D:\Program Files (x86)\workspace\appium_txzl\app\ZQCY20150414_1.apk, javascriptEnabled=true, browserName=Android, networkConnectionEnabled=true, desired={app=D:\Program Files (x86)\workspace\appium_txzl\app\ZQCY20150414_1.apk, platformName=Android, deviceName=MI 3, app-package=cn.com.qytx.zqcy.main.activity, app-activity=.MobileLoadActivity, version=4.4.4}, locationContextEnabled=false, version=4.4.4, platformVersion=4.1, databaseEnabled=false, deviceName=MI 3, platformName=Android, app-package=cn.com.qytx.zqcy.main.activity, webStorageEnabled=false, app-activity=.MobileLoadActivity, warnings={}, takesScreenshot=true}]

虚拟机 Android 版本多少,真机多少?

李婷 #12 · 2015年04月28日 Author

虚拟机是 4.3 ,真机是 4.4.4

你看看 能否定位到这个元素?然后看看是否 clickable?

#4 楼 @lihuazhang 在真机上定位不到发布范围和阅览记录这两个元素,点击 “更多” 按钮出现的浮层整体都定位不到,但是在虚拟机上是可以定位到的,也可以点击

#5 楼 @bueaty 如果手动测试的话,真机有问题吗?

#6 楼 @lihuazhang 手动测试真机是没问题的

1、日志里是 platformVersion=4.1
2、用 shell 导出布局看看有没有,adb shell uiautomator dump /sdcard/window_dump.xml

#8 楼 @sanlengjingvv 刚刚解决了,换用了别的方法
TouchAction actoin = new TouchAction(driver);
action.tap(x,y).perform();
这样就能点击到元素了。

遇到同样问题,在 Android4.1.2 版本 uiautomator 可以定位到浮窗元素,在 Android4.4.2 版本 uiautomator 不能定位到浮窗元素

#10 楼 @xiaoyan 用坐标点击方法
JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap tapObject = new HashMap();
tapObject.put("touchCount", 1);

tapObject.put("duration", 1);

tapObject.put("x", x);
tapObject.put("y", y);
js.executeScript("mobile : tap", tapObject);

#10 楼 @xiaoyan 这个方法好用些
TouchAction action = new TouchAction(driver);
action.tap(x, y).perform();

@bueaty
TouchAction 的 perform() 方法会报错 Method has not yet been implemented
用的 appium 是 1.6.3

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册