你都用到了 lower() 了,还判断啥。
检查下 '//*[text()="资产明细"]' 元素实际大小,或者 text 父级元素的实际大小。默认是点击元素中心,可能该元素中心并不在这个文字上。
allure 会把你的 job 工作目录当做根目录,因此以添加的报告地址拼接,就找不到报告目录了
/opt/jenkins/Jenkinsworkspace/workspace/test/out/test/result/control/20-2-2-2-2-2
Appium 没有和手机建立,实在想获取数据的话就这样
节点机器 adb kill-server
然后执行 adb nodaemon server -a 启动 server 模式
主机使用 adb -H={IP} -P={port} devices 就能获取到其他局域网上的节点手机数据了
还有其实 adb 启动 server 模式后
Appium 也可以使用 remoteAdbHost 的参数连接远程节点上的手机,执行自动化任务,节点不需要搭建 Appium 环境。
def adb_shell(self, command, args, includeStderr=False):
"""
appium --relaxed-security appium需要以此方式启动才可使用shell
adb_shell('ps',['|','grep','appium'])
:param command:命令
:param args:参数
:param includeStderr: 为 True 则抛异常
:return:
"""
result = self.driver.execute_script('mobile: shell', {
'command': command,
'args': args,
'includeStderr': includeStderr,
'timeout': 5000
})
return result
这个库实际上并不是真正的重新运行,而是使用 parametrize 参数化得方式,生成了相同的用例放到了测试集里面。
这不是正常了吗
adb 正在被其他进程占用就会报这个错误,全部杀掉运行试下吧。
看看你用的库对应的 java rsa 加解密用的哪种模式,光 rsa 貌似就好多种模式。跨语言公共加解密建议还是用个统一的 so 或者 jar 包好点。
长按,拖动,滑动的实时性 ADB 怎么保证呀。
如果这样都觉得没问题,请问你们还要测什么?程序不崩溃就可以了吗?
"automationName": "UiAutomator2" 换
截图没有问题,获取全部 source 出了问题,有可能是你当前 APP 动态刷新元素频繁 uiautomator 取全部 source 会经常报错,换 uiautomator2 驱动试下吧。
一个单例模式来初始化 selenium 不可以解决吗?有其他什么复杂场景?
启动参数增加一个 recreateChromeDriverSessions, 每次 NATIVE_APP 和 WEBVIEW 之间切换就会从新生成一个 Session 连接。不知道能不能解决你说的问题。
appium 内存溢出给官方提过好几次了,而且在 1.13 ~1.15 版本尤其严重甚至崩溃,建议使用 1.16 以后,有明显改善。如果对日志获取没有需求的话,可以 Android:skipLogcatCapture ,iOS:skipLogCapture 初始化增加这个参数可以减少很多内存消耗。
我个人推荐还是使用初始化一个单例,来进行测试。这里只是单纯讲解了下 @pytest.fixture() 的用法,但是从初始化 driver 来看实际使用起来并不太友好。如果想使用这种方式,还想要写代码方便联想的话可以从新声明下 self 类型 这样做:
@user2res('fixtureFunc')
class TestFixture(object):
"""声明下 self 类型:ElementActions
"""
def test_fixture_class(self: ElementActions):
self.swip_down()
print('in class with text_fixture_class')
目录空格原因吧,用双引号包一下,执行命令有空格,会分割命令的。
手动能运行起来就查看下 Appium 启动时候日志默认选择的 WebDriverAgent 是哪个目录下面的,很肯能原因是你配置的不是它用的。
jenkins Allure 插件默认是去你的 job 工作目录下面寻找 allure-resulis 的。你的报告生成在运行脚本目录,肯定找不到。把报告生成到 job 工作目录下面就行了
workspace/TestUI 这个目录下
tearDown 是在每条用例执行后都执行,tearDownClass 才是在测试类执行完后才执行。
粗心 txt = open('out.txt', 'r+').readlines 加括号
用其他的压测工具对比下呗,没准就发现了服务的 bug
https://testerhome.com/topics/19420 给个参考 Pytest 其他用法 ,读取 yaml 改成读取 Excel
没有关系,可以随意命名 chromedriver + 下划线 + 版本 什么的