1|0Appium新版本引发的一个问题
2|0准备工作
2|1测试代码
2|2测试环境
- python 3.10,虚拟环境
- pycharm 2018 community
- 测试时间 2023-7-20
3|0场景一: 默认安装 PASS
-
在pycharm中安装appium-python-client,版本不指定,此时是2.11.1
-
对应依赖selenium4.10.0
-
执行示例代码
-
测试
通过
-
??? 所以博主你要表达啥
-
继续看下去
4|0场景二:appium-python-client2.6.0+selenium4.10 FAIL
-
你根据指定版本安装appium-python-client为2.6,自动安装selenium4.10
-
执行示例代码
-
测试
失败
-
提示如下
5|0场景3:appium-python-client2.6.0+selenium4.3.0 PASS
- 你应该是先安装selenium4.3.0
- 然后再安装appium-python-client2.6.0
- 都是指定版本安装
- 有同学会说,谁会这样安装呢
- 会的,因为你可能是先学selenium(我课程要求是4.3,最新的版本4.10的改进对我们没有太大意义,但底层确实改变了很多)
- 测试
通过
6|0问题说明
6|1TypeError 分析
-
先看报错
-
主要版本信息:
- appium-python-client2.6.0
- selenium4.10
-
报错行
-
Remote是个别名
-
看WebDriver源码
-
__init__
中传递了desired_capabilities没有问题 -
继续分析堆栈
-
继续看WebDriver此处源码
-
这里也有desired_capabilities,为何报错了呢
-
请看WebDriver的继承webdriver.Remote
-
到这里你发现了,这个
__init__
里面没有desired_capabilities -
注意webdriver.Remote是隶属于selenium的,你此时的selenium是4.10,升级了,可能导致它remove了一些参数
6|2appium-python-client2.11.1+selenium4.10
-
这是默认组合,要知道selenium也是4.10了,为何没有报错呢?
-
其调用关系简单分析下
-
在
Remote
的__init__
中,也支持desired_capabilities,但有如下信息- 后续要移除desired_capabilities
- 用options替代(模仿selenium)
-
关键的问题是在于,appium-python-client2.11.1中对父类
__init__
的调用是不携带desired_capabilities的 -
完整代码片段如下
6|3appium-python-client2.6.0+selenium4.3.0
-
想必分析到此处,你应该盲猜能知道为何这个也PASS了
-
是因为selenium的版本中webdriver.Remote中是有desired_capabilities的
7|0总结
- 最新版本appium-python-client即将不提供desired_capabilities的传参,但目前能用
- 在selenium4.10中已经不支持desired_capabilities参数
- 错误的搭配可能会引发上述问题,要么用最新的版本(默认安装),要么2个都用较低的版本
- 留在最后的问题,那么在appium最新版中应该如何传递能力值呢?
__EOF__

本文作者:老吴的博客
本文链接:https://www.cnblogs.com/wuxianfeng023/p/17567613.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/wuxianfeng023/p/17567613.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
© 版权声明
文章版权归作者所有,未经允许请勿转载,侵权请联系 admin@trc20.tw 删除。
THE END