Appium Appium 如何模仿人工操作?动作与动作之间带时间延迟,在 java 中该如何实现呢?

tomchen · 2013年12月27日 · 最后由 恒温 回复于 2013年12月27日 · 2017 次阅读

我知道有 wait()这个方法,但是不知道为什么调用时一直报错。

共收到 25 条回复 时间 点赞

这个是我用的,
try {
TimeUnit.SECONDS.sleep(t);
} catch (InterruptedException e) {
e.printStackTrace();
}
这是按秒等待,具体你自己看下都有什么方法吧。这种东西很多的。

#1 楼 @spikeshen 其实有没办法是能够判断界面是否已经加载该控件,然后在进行操作?

#1 楼 @spikeshen 使用 selenium 内的方法

#1 楼 @spikeshen 在 appium ,如果不用任何暂停的方法,直接运行脚本,有可能会出现页面(ios&android)未加载完毕,但是脚本先执行的情况吗?

#2 楼 @dippa 这跟 selenium 会遇到的问题类似,有异步执行操作的问题。异步执行操作要不你就硬等待,要不就做个轮询的循环,等某个元素出现后继续下面的操作。

#5 楼 @spikeshen 有这样的办法能够判断某个元素是否出现的吗?

#6 楼 @dippa 用个 while 然后找呗。。。每隔一定时间查询一次,如果查到元素出现了就结束等待

#5 楼 @spikeshen 不好意思,因为是刚接触的所以不是很熟悉 appium,我之前查过了,不过没查到相关的资料。

#7 楼 @spikeshen 查询使用什么方法的? wd.findelement()?

#8 楼 @dippa 这跟 appium 没关。。。自己写个方法去做这件事就可以

#10 楼 @spikeshen 如何判断是否存在该元素?

#11 楼 @dippa 用 findElements,如果有,那 list.size() 大于 0

#12 楼 @spikeshen 这个是能针对特定元素吗?

#13 楼 @dippa findElement 是找到一个指定的元素,findElements 是找所有的指定元素,返回个 list

#14 楼 @spikeshen 嗯嗯,学到东西了,刚才试了一下可以。

#14 楼 @spikeshen 能帮我看看这个问题吗? http://www.testerhome.com/topics/308

#16 楼 @dippa 这个。。。你先去深入学习下 xpath。。。然后就会了

#14 楼 @spikeshen 我尝试过自己输入 XPath ,获取控件,依旧无法赋值

#17 楼 @spikeshen 是还有其他的使用 XPath 的用法吗?

为什么不用

WebDriverWait(self.driver, 10).until(lambda d: d.find_elements_by_tag_name("staticText")) 

呢?

#20 楼 @lihuazhang 这个就是软等待。。。

#21 楼 @spikeshen 什么是软等待?

#22 楼 @lihuazhang 强制等待一定给定的时间叫硬等待。相对的,等待某个元素出现这是软等待,你这个就是软等待啊,等 staticText 最多 10 秒

find 系列都是软等待。可以设置 selenium 内置的属性来设置最长等待多久。

#21 楼 @spikeshen
为什么我用了这段代码:
try {
TimeUnit.SECONDS.sleep(t);
} catch (InterruptedException e) {
e.printStackTrace();
}

程序运行时会报这样的错误:org.openqa.selenium.NoSuchElementException: An element could not be located on the page using the given search parameters.

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