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

chuyaoyao · 2014年03月05日 · 最后由 Archer 回复于 2014年03月05日 · 1694 次阅读

等待加载出来,或者获取当前 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 貌似是为了跳过一开始的启动界面.

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