给个参考思路:
做一个 for 循环,每隔一定的时间间隔就去找元素。如果抛异常(找不到)就跳出循环继续执行。
你甚至可以把找元素的操作抽取成一个参数,函数只负责在限时内一直运行直到超时或者产生指定异常。
具体源码可以参考 selenium2Library 的 wait_until_element_is_not_visible
方法:https://github.com/robotframework/Selenium2Library/blob/master/src/Selenium2Library/keywords/_waiting.py#L130
学习思路了。目前公司 app 端对接口数据处理的健壮性处理确实不足,很容易崩溃,正在想办法解决这个问题,只是接口并非 json 格式,要做一个转换层。
#7 楼 @seveniruby 嗯,确实压缩资源文件相对效率更高,效果更好。
框架:UIAutomation,calabash-iOS,calabash-Android,UIAutomator,WebDriverAgent,XCTest,XCUITest,Instruments,Instrumentation,Espresso,CTS,Junit,Xposed,drozer。。。
工具:Xcode,Jmeter,gatling,genymotion
技术:stub,mock,fake。。。
这种减包方式真是锱铢必较啊。不过积沙成塔,能减少 80k 确实很不错。
太简练了。。。至少说明一下用法,介绍下具体适用场景,大致原理什么的吧?
根据你的文字完全没搞懂你这个工具应该用来做什么。。。
#18 楼 @anonymous 我们网站源码是开源的。可以在 https://github.com/testerhome/testerhome 找到我们的源码,也欢迎给我们提 issue ,pr 。
网站底部的 Github 链接也是对应我们社区相关开源工具的源码的。
只看到了 info: [IOS_SYSLOG_ROW ] Jun 2 16:40:20 diaojunxiande-iPhone DTMobileIS[2816] <Warning>: Could not create service named com.apple.instruments.server.services.assets
这条信息比较有用。你用的是模拟器还是真机?
建议把 show Simulator Log 和 Show iOS System Log 先关掉,这两个 log 的信息对于你这个问题没太大用处。
上下文描述不清楚。
你在终端输入的具体是什么命令,出现的 UI 界面是怎样的,至少这些要描述清楚。
#53 楼 @zhaohaijun 已添加。
iOS 的 ipa 包不跨平台。要不只能用于真机,要不只能用于模拟器。
你先确定你用的 ipa 包是针对模拟器的吧。
#12 楼 @anonymous 不算没落吧。。。只是大家认清这不是唯一选择而已。
#8 楼 @luoxi001713 有可能。如果确定是输入法问题,你可以到 https://github.com/appium/io.appium.android.ime 提个 issue 让官方修复。
#4 楼 @luoxi001713 系统?机型?有试过在其他手机或者模拟器上做同样操作,是否也是这么不稳定吗?
#2 楼 @luoxi001713 你先把你不稳定的具体情况说一下,例如代码如何,实际执行结果里面执行多少次,多少次正确,多少次不正确,不正确的话是输出了什么。
先描述问题,然后定位问题,最后才会是解决方案。
楼主自己的思考呢?不能这么简单就被面试官否定自己的工作吧。。。
关于性能的帖子很多,Testerhome 也有对应的性能专项公开课。。。你得自己搜索。
#5 楼 @debugtalk 额,不知道,也许是它匹配的时候出问题了。你看下源码的逻辑,或者自己加断点来调试下?
请用 markdown 排版。若不懂可参考 排版说明
已加到 issue 列表,后续会优化。
在输入完成后,关闭数字键盘
试过发一个 back 的按钮事件不?
没搞懂,你是想登录这种情况不要固定等待 10 秒?
如果只是登录不等待,那很简单,登录前把等待时间设为 0 ,登录后把等待时间设回 10 。
淘宝是指阿里 mqc ?
当前我是打算采用 name,但是 app 存在多国语言,这样就需要针对每一种语言进行处理;官方文档推荐采用 ID,但是 APP 里面大多控件都没有 ID 这个属性(从 Console 来看);
关于这个补充回答一下,做 UI 自动化时一般需要手动对控件添加 AccessibilityLabel 来保证其唯一性的。这个属性仅用于做盲人辅助/UI 自动化,和界面显示、多语言之类的都无关。大部分情况下开发不会主动添加这个属性,个别控件会有这个属性值的原因是它们的 AccessibilityLabel 默认值就是控件的某个属性,但这种一般无法满足自动化的需要。
#12 楼 @debugtalk 从 log 来看,server 返回的这个控件的属性如下:
{
"name": "My Account",
"type": "UIAButton",
"label": "My Account",
"value": 1,
"rect": {
"origin": {
"x": 302,
"y": 619
},
"size": {
"width": 71,
"height": 48
}
},
"dom": null,
"enabled": true,
"valid": true,
"visible": true,
"children": [],
"hint": null
}
里面并没有返回名为 id 的属性。估计这个属性是 ruby client 或者 ruby console 自己添加的。然后看了下 ruby client 的源码,发现的确是它自己加的。相关代码:
...
# there may be many ids with the same value.
# output all exact matches.
attributes = [name, label, value, hint].select { |attr| !attr.nil? }
partial = {}
id_matches = @strings_xml.select do |key, val|
next if val.nil? || val.empty?
partial[key] = val if attributes.detect { |attr| attr.include?(val) }
attributes.detect { |attr| val == attr }
end
# If there are no exact matches, display partial matches.
id_matches = partial if id_matches.empty?
unless id_matches.empty?
match_str = ''
max_len = id_matches.keys.max_by(&:length).length
# [0] = key, [1] = val
id_matches.each do |key, val|
arrow_space = ' ' * (max_len - key.length).to_i
match_str += ' ' * 7 + "#{key} #{arrow_space}=> #{val}\n"
end
puts " id: #{match_str.strip}\n"
end
...
完整的源码:https://github.com/appium/ruby_lib/blob/master/lib/appium_lib/ios/helper.rb。