Appium 解决微信公众号、小程序切换 webview 后无法定位元素的问题
2024-08-28 03:13:13
如何切换webview进入小程序请参考https://testerhome.com/topics/12003
脚本思路:
进入webview后会存在多个handle同Web页签一样,获取所有的handle,然后在遍历所有的handle,通过switch_to_window进行handle切换,当某个handle可以定位到我们需要定位的元素时,然后我们就可以进行之后的自动化操作了!
- <code style="font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;line-height:18px;font-size:12px;color:rgb(68,68,68);border:none;">#coding=utf-8
- from appium import webdriver
- import time,os,re
- from appium.webdriver.common.touch_action import TouchAction
- desired_caps = {}
- desired_caps['platformName'] = 'Android'
- desired_caps['deviceName'] = 'Android001'
- desired_caps['unicodeKeyboard'] = True
- desired_caps["resetKeyboard"] = True
- desired_caps["newCommandTimeout"]=30
- desired_caps['fullReset'] = 'false'
- desired_caps['appPackage'] = 'com.tencent.mm'
- desired_caps['appActivity'] = 'com.tencent.mm.ui.LauncherUI'
- desired_caps['recreateChromeDriverSessions'] = True
- desired_caps['noReset'] = True
- desired_caps['newCommandTimeout'] = 10
- desired_caps['chromeOptions']={'androidProcess': 'com.tencent.mm:appbrand0'}
- driver = webdriver.Remote(command_executor = 'http://127.0.0.1:4723/wd/hub',desired_capabilities = desired_caps)
- time.sleep(2)
- time.sleep(1)
- driver.implicitly_wait(10)
- driver.find_element_by_name('发现').click()
- time.sleep(1)
- driver.swipe(100,1200,100,900)
- driver.find_element_by_name('小程序').click()
- driver.find_element_by_name('美团外卖').click()
- time.sleep(2)
- contexts = driver.contexts
- print contexts
- time.sleep(2)
- driver.switch_to.context('WEBVIEW_com.tencent.mm:appbrand0')
- print '切换成功'
- print driver.current_context
- all_handles = driver.window_handles
- print len(all_handles)
- for handle in all_handles:
- try:
- driver.switch_to_window(handle)
- print driver.page_source
- driver.find_element_by_css_selector('.filter-select.flex-center') #定位“筛选 ”按钮
- print '定位成功'
- break
- except Exception as e:
- print e
- driver.find_element_by_css_selector('.filter-select.flex-center').click()
- time.sleep(5)
- driver.quit()</code>
原本:https://blog.csdn.net/qq_35741999/article/details/79430077
最新文章
- C#按需序列化对象为Json字符串
- XMLHttpRequest 2.0与FileReader接口的方法
- 【HTML】心愿墙 Demo展示
- [置顶] 【Git入门之一】Git是神马?
- 三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)
- nat123外网SSH访问内网LINUX的N种方法
- 深度解析javascript中的浅复制和深复制
- create schema 与create database的区别
- 迈向angularjs2系列(3):组件详解
- 两个map一个reduce(两个输入文件)
- python检测变量是否有定义(即使用前检查是否定义好)
- [LeetCode] Preimage Size of Factorial Zeroes Function 阶乘零的原像个数函数
- 与C/C++关键字extern有关的原理
- mybatis {arg0} 与 {0}
- 前端笔记 (1.HTML)
- win用VNC远程Ubuntu教程
- 零碎知识点 telnet操作IMAP查看邮件
- 实现Easyui 可编辑表格
- tcp/ip学习笔记(1)-基本概念
- python学习之items()