明白了
链式调用我理解,但是他怎么做到隔行的呢? python 隔行不是需要 \ 吗
层主,我发现我并不是 idle 等待时间长
我看了 appium 日志,他明明已经定位到元素了,为何,还要再定位
我觉得是元素刷新过快,,页面变了、?
你好,马哥,我有向您请教的问题:
1、我观察到您的 PO 封装完,需要 return 一个 page 回去,我采用的是 return this,而您是 return new page。。请问您是故意不用 this 吗,是否有特殊的原因呢?
2、我观察了您开源的微信公众号的 UI 自动化测试框架,您的 driver 是定义了 static 变量,供后续的 findElement 等等操作,但是这样在多线程下安全吗?线程 1 设置了 driver,被线程 2 修改,,请问这里是故意这么设计的吗?
哇,你们俩头像太像了,全白色,我混淆了,抱歉抱歉。。。
飞哥,我又有向您请教的问题:
1、我观察到您的 PO 封装完,需要 return 一个 page 回去,我采用的是 return this,而您是 return new page。。请问您是故意不用 this 吗,是否有特殊的原因呢?
2、看了您介绍很多的设计模式,但是我发现前期初搭项目时,为了更快生产、交付给老板,往往不能考虑到这么多设计。您是后续重构的时候,才开始将建造者、策略模式等等引入项目的吗?
3、我观察了您开源的一个微信公众号的 UI 自动化测试框架,您的 driver 是定义了 static 变量,供后续的 findElement 等等操作,但是这样在多线程下安全吗?线程 1 设置了 driver,被线程 2 修改,,请问这里是故意这么设计的吗?
多谢层主指路,我去翻了 Appium 文档,好像还真有说法,我现在去试试
我理解,conftest 是定义 fixture 的一块地方,至于各自 fixture 的作用域,还是它们自己的 scope 决定的吧?
另外 conftest 只对和他一个目录的 test.py 生效。。
不知道和楼主的提问点是否有信息差
牛逼。
飞哥的这文章我重新看了不止 56 遍了,每遍都多理解一些。
这里有个小问题哈:
您最后一张图,每个模型训练的 case 就 build + run + waitUntil。批跑起来了自动化,是每个 case 都只执行一遍吗?我并没有看到参数化,那是不是说,批跑一次,只会对每个 case 跑一遍(给一个 randomString 的输入,但是没有其他特殊情况的输入了呀)。这些 case 都只能算是冒烟测试吗?
其实不是很明白 UI 自动化到底该怎么执行参数化与 ddt,希望飞哥解惑。。
response = self.Action.__getattribute__(self.locator.get('method'))(self.locator)
这里我用过 exec(string) 的方式逃过课,哈哈
相当于,
string = "response = self.Action.{}({})".format(self.locator.get('method'), self.locator)
exec("string")
exec 执行 string 的时候,已经拼接成正常的 python 代码了
不过楼主方法更优雅,更 python
楼主,求助一下 Driver 单例的问题:
我第一个用例跑完用一个 driver 进行连接,也创建了一个 Action 单例,没问题,
但是我该怎么释放这个单例呢?我接下来跑第二个用例,需要重新用 desired_caps 启动 app 呀,那应该是一个新的 driver,而且也得用这个新 driver 创建新的 Action 单例。。。那这时候怎么析构掉上一个 Action 单例呢?
我这块儿我没有想明白,烦请楼主指教了。