首页 > 其他分享 >APP自动化--webview上下文翻动

APP自动化--webview上下文翻动

时间:2023-06-02 18:56:22浏览次数:47  
标签:source -- APP driver current contexts context webview 上下文

前提工作都做好,包括 1、开启webview,

打开app对应的h5页面,在 chrome://inspect/#devices 地址中,检查是否显示对应的webview,如没有,则当前未开启调试模式
开启方式:
在WebView类中调用静态方法setWebContentsDebuggingEnabled,这种需要App开发人员操作。
if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
————————————————

同时开发者模式打开多线程webview

2、拿到网页页面地址和手机浏览器版本信息

  • 手机与电脑连接,开启USB调试模式,通过adb devices可查看到此设备

  • 在手机端(模拟器)打开应用,进入H5页面

  •  

 3、在电脑端Chrome浏览器地址栏输入chrome://inspect/#devices,进入调试模式

 

4、下载对应Chromedriver

 

启动appium server 写下如下代码:
 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 # @Time    : 2023/6/2 16:52
 4 # @Author  : 
 5 # @File    : webview上下文翻动.py
 6 # @Software: PyCharm
 7 import json
 8 from appium.webdriver import Remote
 9 
10 url = "127.0.0.1:4723/wd/hub"
11 caps1 = '{"platformName": "Android", "appium:deviceName": "172.16.10.103:20005", "appium:platformVersion": "7.1.2","appium:notReset": true}'
12 caps = json.loads(caps1)
13 
14 
15 driver = Remote(url, caps)
16 
17 driver.save_screenshot("打开界面的截图.png")
18 
19 # 第一步获取所有的上下文对象
20 
21 contexts = driver.contexts    # driver.context是获取所有上下文
22 print(contexts)
23 
24 current_context = driver.current_context    # driver.current_context是当前所在的上下文是哪一个
25 page_source = driver.page_source
26 print("切换之前的页面是:", current_context)
27 print("切换之前的页面源码是:之前.txt")
28 with open("之前.txt", "w", encoding='utf8') as f:
29     f.write(str(page_source))
30 
31 
32 driver.switch_to.context(contexts[-1])  # 切换上下文
33 # driver.switch_to.context() 切换上下文
34 current_context = driver.current_context
35 page_source = driver.page_source
36 print("切换之后的页面是:", current_context)
37 print("切换之后的页面源码是:之后.txt")
38 with open("之后.txt", "w", encoding='utf8') as f:
39     f.write(str(page_source))

运行结果如下:

 

contexts上下文操作
获取所有上下文
driver.contexts

获取当前上下文
driver.context

切换上下文
方法一:driver.switch_to.context('WEBVIEW_com.xkw.client')
方法二:contexts = driver.contexts
driver.switch_to.context(contexts[-1])

切回原生应用
driver.switch_to.context('NATIVE_APP')

 

标签:source,--,APP,driver,current,contexts,context,webview,上下文
From: https://www.cnblogs.com/gezirui/p/17452700.html

相关文章

  • TCP和UDP区别
    TCP是传输控制协议,UDP是用户数据表协议;TCP长连接,UDP无连接;UDP程序结构较简单,只需发送,无须接收;TCP可靠,保证数据正确性、顺序性;UDP不可靠,可能丢数据;TCP适用于少量数据,UDP适用于大量数据传输;TCP速度慢,UDP速度快;......
  • RSA密钥证书的生成
    @@rsa密钥生成 首先需要下载OpenSSL软件,一直点击下一步就好,链接:链接:https://pan.baidu.com/s/1uHNpKGF9j9c1bQ6QAwtpOA提取码:myit(百度网盘分享无须官网下载,如若不好使请私信或者评论) 启动位置是在你软件安装的位置下,找到bin目录,然后在上方文件位置直接输入cmd,或者打开dos......
  • goto语句
    跳转语句C语言的跳转语句主要包括continue,break,retuen,还有就是goto啦goto语句goto语句是在所有跳转语句中最自由的一种,但在大型工程和多人协作工程中并不推荐,原因就在于它太过于自由,会导致代码的可读性变得较差但这也无法撼动goto语句的地位合理的使用goto会大大简......
  • 解锁软件工程新角色
    云计算、微服务、人工智能等技术正在高速发展与进步,软件开发变得越来越复杂与多样化。传统的软件开发模式已经不能满足现代企业对于快速交付、高质量、低成本的期望与需求。企业渐渐开始通过创建可重用、自助式平台的实践,使开发人员能够以最小的摩擦构建、部署和运行其应用程序,这......
  • 有没有免费版的配音软件?
    1.先说结论:完全免费的剪映配音可以满足大部分需求先不要着急去买付费的配音软件。(我就被忽悠过,买了付费配音软件后,实际没用几次)当你明确的知道,剪映配音的不足时,再考虑选付费的配音软件。刚开始做视频的时候,总是担心自己的普通话不够标准,不会给视频配音。后来发现,有文本......
  • 关于微服务项目
    微服务项目的代码实现通常需要进行以下几个方面的工作:1.服务接口设计:制定服务接口规范,定义服务请求和响应数据结构,并使用接口定义语言(IDL)来描述服务接口。常用的IDL包括ProtocolBuffers、Thrift等。2.服务实现:根据服务接口规范实现服务功能逻辑,采用对应的编程语言和框架进行开......
  • Vue——前端发展史、Vue介绍和使用、插值语法、文本指令、事件指令
    前端的发展史#1HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面->给后端(PHP、Python、Go、Java)->后端嵌入模板语法->后端渲染完数据->返回数据给前端->在浏览器中查看 javascript=ECMAScript(5,6,13)+Dom+Bom#2Ajax的出现->后台发送异步请求,Ren......
  • 看书学习方法总结
    1、一小节一小节的看和记忆,然后复述回顾每一小节的内容,等把一章节看完过后,再把一章节的内容复述回忆出来(系统学习法)这个方法需要耐心,做足长期准备,而不是一次或者几天全部记忆完成。类似于诸葛亮的看书方法:看完一本就烧一本书,内容全部在脑子里需要注意的是:要尽量把......
  • idea远程调试上线项目
    本机环境:idea2023win11jdk8服务器环境jdk8centos7项目A.jar第一步:在A.jar的项目启动参数中加入:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005参数解释:address前面的固定,只需修改端口就好。记住,一个服务一个端口,且该端口不可与服务......
  • NET Core WebAPI 认证授权之JWT
    @@.netcoretoken非对称加密 --Google-->@@wepapi认证授权之jwt NETCoreWebAPI认证授权之JWT(二):HMAC算法实操  一、前言在上一篇 《.NETCoreWebAPI认证授权之JWT(一):JWT介绍》中讲到了JWT的组成,分为三部分,其中标头(header)和载荷(payload)都只是简单的将json......