Appium 怎么判断元素在当前手机屏幕上

Testersiwang · 2016年09月06日 · 最后由 Testersiwang 回复于 2016年09月09日 · 2551 次阅读

1.目的:滑动屏幕直到元素出现在屏幕上后停止滑屏
2.问题:如何判断元素在当前手机屏幕上了
3.尝试了 element.isdisplayed() 和 element !=null 都是一直返回 true
4.代码如下:

public void doswipeTo() {
            // TODO Auto-generated method stub

                WebElement webElement = driver.findElement(By.id("com.android.chrome:id/search_box_text"));
                for (int i = 0; i < 5; i++) {
                    if(webElement.isDisplayed()){
                        break;//一直返回ture值
                    }
                    swipeTo(driver);
                }       

        }
共收到 10 条回复 时间 点赞
  1. 代码请使用代码块
  2. 你是 Android 还是 iOS 还是 WebView ?对于 WebView 元素,印象中不需要滑动,直接对它执行点击之类的操作它会自动滑动到可显示位置。

#1 楼 @chenhengjie123 好的以后注意。是安卓的 webapp。想点击屏幕下方的控件,不会自动滑动。试过 ios 的会自动滑到元素位置自己点击。

#2 楼 @Testersiwang 你要把 findelement 的操作也放到 for 循环里才可以把

#2 楼 @Testersiwang 额,这次就改吧,不要等以后。

#3 楼 @wang04170 是 H5 的页面。判断元素 is displayed 一直返回 true

#4 楼 @chenhengjie123 好的咧,改好了

#5 楼 @Testersiwang webview 实际用的是 selenium。selenium 对于 isDisplayed 的定义和原生界面的不一样,貌似只要通过滑动能出现的元素 isDisplayed 都不会是 false ,只有隐藏元素(比如设置了 display: none 样式)的才会返回 false 。不过我也不是很确定,建议你去查一下。

@Testersiwang 可以试试 webElement.getSize().height

#7 楼 @chenhengjie123 好的谢谢,已经解决了

#8 楼 @lilychow 谢谢,用了坐标的 y 轴做判断解决了 webElement.getLocation().y

Testersiwang 关闭了讨论 09月09日 09:58
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册