不错,对于还没有养成测试习惯的公司或者团队来说参考意义很大。
#71 楼 @junewang1990 我用得不多,但我之前用得时候没遇到过。
你在它的 github 上问下它的作者?
#68 楼 @junewang1990 先确定下,你的 app 确实没有挂?再者,没看出这里和线程有什么关系。印象中 CrashMonkey4iOS 是通过 idevicedebug 命令唤醒 app 的,虽然是通过另外的线程启动,但应该和 app 切不回来关系不大。
最近都没怎么关注 WDA 了,之前它的开发者说 API 要改成遵循 WebDriver 的,不遵循的用类似 appium 的方式用私有 route ,但不知道现在进展如何。
python client 的话我后面找个时间重写一个吧,之前在公司写的现在我手上也没有了。。。
info: [debug] Responding to client with error: {"status":7,"value":{"message":"An element could not be located on the page using the given search parameters.","origValue":"Element was not found."},"sessionId":"731aff66-ddd6-83cf-779a-3243c638927f"}
selendroid 和 uiautomator 看到的屏幕元素树内容是不一样的,两者的 xpath 不通用。
你单独使用 selendroid 的 inspector 看下屏幕元素树,再根据它写 xpath 吧。
代码请使用代码块。
#90 楼 @michael_wang ????
报名链接在哪?
其实我当时这么问只是觉得你的问题有点突兀,以为你还有东西要写。。。
看了下你们的策略,我感觉没啥问题,只是感觉你们 CTO 略忙。。。
#22 楼 @t880216t 看了下,appium python client 源码改了,现在 ConnectionType
直接继承的是 object
,不是 Enum
,所以以前的用法用不了。
可以参考下面的用法根据 self.driver.network_connection
的值获取 ConnectionType
的对应属性名:
# python
from appium.webdriver.connectiontype import ConnectionType
def get_connection_name(connection):
"""
根据 connection 的值获取对应状态名
:param connection: 通过 driver.network_connection 获取到的网络状态
:return: 对应状态名,如 NO_CONNECTION
"""
for attr in ConnectionType.__dict__:
if ConnectionType().__getattribute__(attr) == connection:
return attr
raise AttributeError("ConnectionType with value %s do not exist." % connection)
# 获取状态名
get_connection_name(self.driver.network_connection)
我把 bat 误解为百度 + 阿里 + 腾讯了。。。建议换成 cmd 吧。。。
我试了下,它的流程是先把钱包进红包,然后再把红包发出去。所以你取消的只是发红包这个步骤,包红包的步骤还是完成了的。
不过有一个地方确实做得不好, 发出的红包 里面选中这个实际没有发给任何人的红包后应该能够选择发给哪个联系人。否则这就是一个永远发不出去的红包了。
你定位软键盘是想干嘛?
iOS 上看了下,没这问题。应该是 Android 的问题。
这是写完了?
赞~
话说,标题不翻译是故意的吗?
至于你提到的 testerhome社区有看到is_displayed在appium中是不可用的
,不知道你具体是哪篇文章看到的?能给下出处吗?
#8 楼 @testblue 这么说吧,正常自动化测试用例的执行套路是:
setUp()
test1()
tearDown()
setUp()
test2()
tearDown()
...
setUp 和 tearDown 是由测试框架(如 Junit,testng)提供的固定方法,默认什么都不做。而你想要达到的相互不影响,应该是在 setUp 和 tearDown 里操作。
还是举前面注册和登录的例子吧:
setUp:打开应用
test1():注册用户
tearDown:删除用户并关闭应用
setUp:打开应用
test2():注册用户并登录
tearDown:删除用户并关闭应用
要消除 test1 的效果,应该在 tearDown 里面做。这也是上面其他同学提到的 “case 之间解耦” ,即无论测试集中的 test1 用例通过或失败,test2 用例都不会受到影响。
你手工测试收起键盘是怎么操作的?你在自动化里使用的是一样的操作吗?
这个我觉得不是 robotium 的问题吧。按照顺序来说,你的 test1 跑完,然后继续跑 test2 ,此时 test1 的遗留效果还在,这很正常吧。
我猜你想要的是 test1 跑完就整个 app 重置,然后 test2 跑的时候相当于是重新启动 app 来跑的?举个例子,test1 注册了用户,test2 是注册并登录这个用户,所以 test1 跑完后 test2 注册就会出错(这个用户已经注册过),而你需要的效果是 test1 跑完的遗留效果和没跑过(即没有注册过用户)一样?