如何切换webview进入小程序请参考https://testerhome.com/topics/12003

脚本思路:
进入webview后会存在多个handle同Web页签一样,获取所有的handle,然后在遍历所有的handle,通过switch_to_window进行handle切换,当某个handle可以定位到我们需要定位的元素时,然后我们就可以进行之后的自动化操作了!

  1. <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
  2. from appium import webdriver
  3. import time,os,re
  4. from appium.webdriver.common.touch_action import TouchAction
  5.   
  6.   
  7. desired_caps = {}
  8. desired_caps['platformName'] = 'Android'
  9. desired_caps['deviceName'] = 'Android001'
  10. desired_caps['unicodeKeyboard'] = True
  11. desired_caps["resetKeyboard"] = True
  12. desired_caps["newCommandTimeout"]=30
  13. desired_caps['fullReset'] = 'false'
  14. desired_caps['appPackage'] = 'com.tencent.mm'
  15. desired_caps['appActivity'] = 'com.tencent.mm.ui.LauncherUI'
  16. desired_caps['recreateChromeDriverSessions'] = True
  17. desired_caps['noReset'] = True
  18. desired_caps['newCommandTimeout'] = 10
  19. desired_caps['chromeOptions']={'androidProcess': 'com.tencent.mm:appbrand0'}
  20. driver = webdriver.Remote(command_executor = 'http://127.0.0.1:4723/wd/hub',desired_capabilities = desired_caps)
  21. time.sleep(2)
  22. time.sleep(1)
  23. driver.implicitly_wait(10)
  24. driver.find_element_by_name('发现').click()
  25. time.sleep(1)
  26. driver.swipe(100,1200,100,900)
  27. driver.find_element_by_name('小程序').click()
  28. driver.find_element_by_name('美团外卖').click()
  29. time.sleep(2)
  30. contexts = driver.contexts
  31. print contexts
  32. time.sleep(2)
  33. driver.switch_to.context('WEBVIEW_com.tencent.mm:appbrand0')
  34. print '切换成功'
  35. print driver.current_context
  36. all_handles = driver.window_handles
  37. print len(all_handles)
  38. for handle in all_handles:
  39. try:
  40. driver.switch_to_window(handle)
  41. print driver.page_source
  42. driver.find_element_by_css_selector('.filter-select.flex-center') #定位“筛选 ”按钮
  43. print '定位成功'
  44. break
  45. except Exception as e:
  46. print e
  47. driver.find_element_by_css_selector('.filter-select.flex-center').click()
  48. time.sleep(5)
  49. driver.quit()</code>

原本:https://blog.csdn.net/qq_35741999/article/details/79430077

最新文章

  1. C#按需序列化对象为Json字符串
  2. XMLHttpRequest 2.0与FileReader接口的方法
  3. 【HTML】心愿墙 Demo展示
  4. [置顶] 【Git入门之一】Git是神马?
  5. 三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)
  6. nat123外网SSH访问内网LINUX的N种方法
  7. 深度解析javascript中的浅复制和深复制
  8. create schema 与create database的区别
  9. 迈向angularjs2系列(3):组件详解
  10. 两个map一个reduce(两个输入文件)
  11. python检测变量是否有定义(即使用前检查是否定义好)
  12. [LeetCode] Preimage Size of Factorial Zeroes Function 阶乘零的原像个数函数
  13. 与C/C++关键字extern有关的原理
  14. mybatis {arg0} 与 {0}
  15. 前端笔记 (1.HTML)
  16. win用VNC远程Ubuntu教程
  17. 零碎知识点 telnet操作IMAP查看邮件
  18. 实现Easyui 可编辑表格
  19. tcp/ip学习笔记(1)-基本概念
  20. python学习之items()

热门文章

  1. 0day2安全——笔记4(修改临界变量)
  2. 设计模式-Adapter(结构型模式)针对第三方库 函数 接口不匹配的问题,分为类模式 与 对象模式 两种
  3. 【未完成】【oracle】单引号使用问题
  4. 2019 SDN上机第5次作业
  5. ASP.NET Core 模型验证的一个小小坑
  6. JS 从内存空间谈到垃圾回收机制
  7. Ansible-Tower自动化运维管理环境 - 安装破解记录
  8. Java正则表达式验证IP,邮箱,电话
  9. python 动态语言和协议编程
  10. 分词 | 双向匹配中文分词算法python实现