最新消息:20210917 已从crifan.com换到crifan.org

【技术问答】appium操作安卓时从原生界面到h5界面去切换上下文提示驱动不对

界面 crifan 237浏览 0评论
问答过程:
大佬,你知道怎么改手机浏览器内核吗
都不及你
@crifan.com – xxx 最近搞了一下appium,从原生界面到h5界面,需要切换上下文,但是提示驱动不对
crifan.com – xxx
把代码和界面贴出来看看 具体啥问题
都不及你
rt.switch_to.context(rt_content=[-1])
 
都不及你
报错我跑一下,马上发出来
都不及你
selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: A new session could not be created. Details: session not created: This version of ChromeDriver only supports Chrome version 76
都不及你
都不及你
@crifan.com – xxx 大佬这是代码以及报错,还请帮忙看看
crifan.com – xxx
session not created: This version of ChromeDriver only supports Chrome version 76 –
-》看起来是 你的 Chrome程序 和 Selenium的chromedriver 不匹配 -》需要你确保两者匹配
都不及你
程序的chromedriver是76版本的
都不及你
selenium的chromedriver只的是模拟器或者手机浏览器的吧
都不及你
如果 是的话就是68版本的,两者不匹配,但是手机或模拟器类型的这个不知道怎么改
crifan.com – xxx
chromedriver是给Selenium用的,用于Selenium调用chromedriver,去打开Chrome程序
crifan.com – xxx
两者确保是同一个(主)版本 ,比如 要么都是86 要么都是76
crifan.com – xxx
要么都是 68
都不及你
crifan.com – xxx
crifan.com – xxx
https://chromedriver.chromium.org/downloads
下载和你的 电脑中的chrome一致的版本的:ChromeDriver
都不及你
crifan.com – xxx
都不及你
@crifan.com – xxx 但是怎么替换
crifan.com – xxx
看你上面截图说是 68的Chrome,是2018年的 -》太老了,建议换最新的Chrome。
所以你可以:去最新版本的 Chrome程序,确认Chrome版本,再去找和Chrome版本一致的ChromeDriver
都不及你
手机浏览器的这个不清楚怎么替换[表情],如果只能替换我程序里面的ChromeDriver这个倒是知道
crifan.com – xxx
手机浏览器的这个不清楚怎么替换 -》 用你手机中的应用市场 比如 小米手机是 应用商店,搜 Chrome 然后找到最新版 去安装
都不及你
[表情]这么说的话,其实还是我没有下载谷歌浏览器,用的是自带的浏览器
crifan.com – xxx
刚发现,我此处,国内的应用市场 估计搜不到 Chrome -》那你就改换 你的ChromeDriver吧
crifan.com – xxx
你的代码是放在安卓手机里跑的?
都不及你
是的,
都不及你
都不及你
模拟器
都不及你
没有的话只能更改这个驱动改为68版本的了,下载下来替换掉
crifan.com – xxx
没看懂你为何要把 Python代码 放在 安卓手机中运行??? 正常不是放在电脑端运行的吗?
都不及你
[表情]不不不,我理解错意思了,我放在电脑端的pycharm里面跑的
都不及你
我用模拟器浏览器下载一个 Chrome
crifan.com – xxx
py代码在电脑端 运行的appium? 想要用Selenium 操作 安卓手机中的Chrome?
都不及你
通过py代码连接模拟器跑一下app
都不及你
我代码跑的是这个去哪旅行的app。想简单的操作一下,但是遇到了web界面
都不及你
从原生界面点击一个按钮,跳转到的界面是web界面,所以我就想切换上下文,再进行下一步操作,就遇上了这样的问题
crifan.com – xxx
1.我没用过 切换上下文 2. 根据我理解,应该不需要。应该只是:你界面上看到哪些元素 ,调试搞清楚具体定位符,写代码定位,操作,即可
crifan.com – xxx
所以 按道理 不需要涉及什么Selenium之类的东西 只是appium相关的操作 调用appium的函数和接口 定位元素 操作元素 而已
都不及你
确实,我刚刚替换了驱动,也发现了这个问题,正准备想说呢,替换之后问题解决了,至于替换上下文的操作,不需要可以正常定位,替换了反而定位不到元素,看来后面得仔细捣鼓一下了
都不及你
谢谢大佬解惑
crifan.com – xxx
至于替换上下文的操作,不需要可以正常定位 -》 是你 appnium操作的目标设备 = 此处的安卓手机 = 此处的安卓手机模拟器,其中 对于appium来说,只是要操作的页面中的某些元素而已,至于其内部是浏览器还是某个app,appnium不关心,也没法关心。对于appium只是去 定位元素 操作元素(点击等)即可
crifan.com – xxx
只是你 肉眼看起来 以为的 被操作对象从APP换成浏览器了 你以为要换用Selenium等去模拟操作浏览器呢
都不及你
确实是这样
【总结】
背景:
Appium操作安卓(模拟器),操作的是原生app,其中页面切换成web页面显示
用代码:
rt.switch_to.context(rt_content=[-1])
尝试去:切换上下文
报错:
selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: A new session could not be created. Details: session not created: This version of ChromeDriver only supports Chrome version 76
原因:
(1)表面原因:Selenium用到的chromedriver版本和Chrome程序版本不一致
(2)根本原因:误以为appium操作对象,从原生app页面,换成web页面,就要换,涉及到,Selenium模拟操作浏览器(页面)。
实际上是:Appnium操作按照设备,只关心,当前页面的元素,去写代码,能定位到,再去操作(比如点击),而不关心(也没法关心),当前页面是原生app页面还是web页面
解决办法:
正常去调试(此处的安卓模拟器)当前页面的元素,写代码能定位到元素,再去点击元素等正常操作即可。
无需涉及Selenium的模拟浏览器操作web页面的事情。

转载请注明:在路上 » 【技术问答】appium操作安卓时从原生界面到h5界面去切换上下文提示驱动不对

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
90 queries in 0.132 seconds, using 21.72MB memory