码哥驾到

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1241|回复: 0

Appium 解决微信公众号、小程序切换 webview 后无法定位元素...

[复制链接]

185

主题

217

帖子

1016

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1016

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2022-2-14 18:10:16 | 显示全部楼层 |阅读模式
如何切换webview进入小程序请参考https://testerhome.com/topics/12003

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

开启bug网址:debugx5.qq.com
————————————————
  1. <code class="hljs">#coding=utf-8
  2. from appium import webdriver
  3. import time,os,re
  4. from appium.webdriver.common.touch_action import TouchAction


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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|码哥驾到 ( 京ICP备15044914号-1 )

GMT+8, 2022-5-25 11:58 , Processed in 0.062500 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表