Appium iOS webview 界面 Xpath 定位后点击无效 [原因已找到,寻求解决方法]

大浪 · 2016年06月23日 · 最后由 wangyankiko 回复于 2018年04月14日 · 2840 次阅读

切换 webview 后,通过 path 定位元素,不报错,但是点击无效
html 代码如下:

<div light="t" action="leftBtnClick" class="div_left" style="">
<span action="leftBtnClick" class="head_left head_left_down">
<a class="icon-head-back" action="leftBtnClick"></a>
</span>
</div>

JAVA 代码如下:

List<WebElement> elements = driver.findElementsByXPath("//span[@action='leftBtnClick']");
        System.out.println(elements.size());
        for (WebElement element : elements){
            System.out.println(element.getText());
        }
        System.out.println(elements.get(0).getLocation().x + "," + elements.get(0).getLocation().y);
        elements.get(0).click();

控制台输出:

NATIVE_APP
WEBVIEW_132
1

15,0

看打印出的坐标,是不是因为元素错位?

原因:

webview 返回的 getLocation 并不是和屏幕中(也就是 inspector 中显示)Location 一致,导致点击无效

寻求解决方法

共收到 10 条回复 时间 点赞
大浪 #11 · 2016年06月24日 Author

呼呼呼 ~~咋没人呀

大浪 #10 · 2016年06月24日 Author

真是奔溃了 ,用 tap 点击坐标可以,
但是有的地方点坐标又不行 ,真是蛋疼

我这里一个 app 也是元素可以找到,tap().perform() 和 click() 都不可以,js 方式也不可以,不知道为什么,前 2 天看到【关于 H5 动画页面元素坐标超出边界的探讨】这个文章,但是我那个也无法根据这个解决,不知道还有什么方法

#3 楼 @zjyfyyx880307 我的情况应该不是坐标超出边界。返回的坐标是在屏幕范围内,通过坐标点击不报错,但是无法判断是否是点击了(但是并没有点击到需要的元素,如果是这个原因,可能是元素返回的坐标并不准确,点到了无效位置,所以没有反应也不报错),不知道 ios 有没有和 Android 一样的开发者选项 - 指针位置,这样就可以知道到底是点的哪里

7楼 已删除

@jira 苹果可以先截图,然后有个 markman 的工具,可以很好的确定坐标

#6 楼 @zjyfyyx880307 好方法 我试试

ios_webkit_debug_proxy 启动后,手机端也需要开启 safari 的调试开关

#8 楼 @quqing 这个开了

大浪 #10 · 2016年06月27日 Author

#6 楼 @zjyfyyx880307 原因找到了,webview 返回的 getLocation 并不是和屏幕中(也就是 inspector 中显示)Location 一致,导致点击无效,实际点击在元素之外了

大浪 回复

那最后是怎么解决的呢?

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