Appium driver 有等待 android 的 activty 加载出来的函数么?

chuyaoyao · March 05, 2014 · Last by Archer_小A replied at March 05, 2014 · 1288 hits

等待加载出来,或者获取当前android上活跃的activty是哪个?

共收到 9 条回复 时间 点赞

新版本增加了app-wait-activity这个选项, 你可以试试. 我还没来得及试验.

我感觉真实应用场景中不是等待一个Activity出现,而是等待Activity上的某一个元素出现,比如登陆完成后是否能够正确显示我要的用户名,为何不试试selenium自己的WebDriverWait,他在support.ui下,support下还提供了一个expected_conditions,里面实现了很多实用的可调用类

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

........
........
........

def XXX(self)
#WebDriverWait构造方法传入两个参数,一个是当前实例的driver
#另外一个是超时时间,当然了,当WebDriverWait在当前Activity中找到你要定位的那个元素 时,他是不会去管这个超时时间的,马上就会CallBack
WebDriverWait(self.driver,10).until(EC.presence_of_element_located((By.NAME,"登 录")))
textfields=self.driver.find_elements_by_tag_name("textfield")


上面的例子是我自己测试过的,可以满足这个需求。

#3楼 @qddegtya 这种工作应该交给框架, 尽量不要自己单写. webdriver自己也有wait机制吧, 可以设置控件的等待时间长点就可以了吧

#4楼 @seveniruby sleep,wait "死等"神马的会不会有点被动的说~而且,假如我这个脚本的作用本身就是为了自动化验证一个业务的处理时间,中间如果出现"死等"的情况,测试结果的误差就太不可控了,实际上我们需要的是一个比较理想的处理方式:在一个可用的方法中可以设置一个超时时间,但是在不超时的情况下只要找到我要的元素或者Activity就应该立刻进行下面的活动,我上手Appium时间不长,但是我尝试使用Selenium的WebDriverWait是可以做到以上需求的,app-wait-activity 什么时候试验一把。

#5楼 @qddegtya 不是死等, selenium或者uiautomator这类工具在你编写click代码的时候, 就已经在智能判断元素是否存在了, 不存在死等. 只是这个时间太小, 你配置的大点就可以实现你上面代码的功能了.

#6楼 @seveniruby 额,OK,酱紫啊,误会意思啦......

#7楼 @qddegtya 呵呵, 讨论下更清晰, 挺好

问题解决了没, 我看了app-wait-activity 貌似是为了跳过一开始的启动界面.

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up