Python+Appium学习篇之WebView处理
1.认识WebView
实例说明:
当你打开百度阅读APP→VIP全站去广告→用自带的 UI Automator去定位里面的元素,如图:

不管你去定位 '规则详情' '开通'等等,都会定位不到,只能显示一个整体页面,这个就是WebView
Note:
① 可以理解与selenium里的iframe类似
②在右边定位里有明确的表示是 WebView
③点击一个链接后,有进度条加载后页面一般都是Webview. 也就是说,是一个H5页面了
④UI Automator 不能定位到里面的元素
处理方法1:
①执行 print(driver.contexts) 获取所有的上下文
②在切换到他的webview里面去(类似selenium里的切换窗口)
③获取到他的webview源码,在其他浏览器打开,获取他的xpath路径,或者其他定位方法

#coding:utf-8
from appium import webdriver
import time
u'''智行火车票,webview页面定位'''
desired_caps = {'platformName': 'Android',
'deviceName': '9a762346',
'platformVersion': '6.0.1',
'noReset': True,
'appPackage': 'com.yipiao',
'appActivity': 'com.zt.main.entrance.ZTLaunchActivity'}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(10)
print(driver.context)
driver.find_element_by_xpath('//*[@text="我的"]').click()
time.sleep(3)
driver.find_element_by_xpath('//*[@text="产品意见"]').click()
time.sleep(3)
print(driver.contexts) driver._switch_to.context('WEBVIEW_com.yipiao')
print('切换成功')
p=driver.page_source
with open('1111.html','wb') as f:
f.write(p.encode('utf-8'))
time.sleep(2)
#driver.find_element_by_xpath("//*[contains(text(),'【抢票】我能抢到票吗')]").click()
driver.find_element_by_xpath(".//*[@id='container']/div/div/section[2]/ul/li[2]/a/div[1]/span").click()
处理方法2:
主要是你已经确定他是一个webview,但是打印全部上下文返回的list里只有NATIVE_APP,无法进行切换。
就不要去切换了,当做是APP原生的,只需要定位到某个元素就行
这种情况不建议用获取源码,没太大用。



#coding:utf-8
from appium import webdriver
import time
u'''百度阅读,webview页面定位'''
desired_caps = {"platformName": "Android",
"deviceName": "9a762346",
"platformVersion": "6.0.1",
"noReset": True,
"appPackage": "com.baidu.yuedu",
"appActivity": "com.baidu.yuedu.splash.SplashActivity"}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(10)
driver.find_element_by_accessibility_id('VIP').click()
time.sleep(3)
driver.find_element_by_accessibility_id("规则详情").click()
Python+Appium学习篇之WebView处理的更多相关文章
- python+appium学习总结
经过了这个月的学习,今天终于完成了公司APP系统的自动化的脚本的编写. 通过单元测试框架UNITTEST,进行脚本的连跑,本来还想把测试数据统一写到EXCEL表格内,实现脚本与数据的分离. 后来发现增 ...
- [python][django学习篇][3]创建django web的数据库模型
推荐学习博客:http://pythonzh.cn/post/8/ 博客或者web界面向用户展示内容,它需要从某个地方获取博客内容或者web界面内容,才能够展示出来.通常来说:某个地方指的就是数据库 ...
- Python 基础学习篇
注:技术尚浅,时间匆忙,如有错误或者不当之处值得商榷的,请留言,吾必思而改之. 第一篇 :Python基础- 安装/变量/输入/及循环语句使用 第二篇: Python基础- 常用数据类型 第三篇: ...
- [python][django学习篇[13]增加markdown_1
1 进入虚拟环境,安装markdwon python install markdown 2 修改视图函数detail def detail(request, pk): # get_object_or ...
- [python][django学习篇][5]选择数据库版本(默认SQLite3) 与操作数据库
推荐学习博客:http://zmrenwu.com/post/6/ 选择数据库版本(SQLite3) 如果想选择MySQL等版本数据库,请先安装MySQL并且安装python mysql驱动,这里不做 ...
- [python][django学习篇][4]django完成数据库代码翻译:迁移数据库(migration)
上一篇我们已经完成数据库的设计,但是仅仅是python语言,并没有真正创建了数据库表.翻译成数据库语言,真正创建数据库表由django manage.py来实现,这一过程专业术语:迁移数据库 切换到m ...
- [python 函数学习篇]默认参数
python函数: 默认参数: retries= 这种形式 def ask_ok(prompt, retries=, complaint='Yes or no, please!'): while Tr ...
- [python xml 学习篇][0]
tree = ET.parse("Result.xml")root = tree.getroot()print type(root)print root.tag # 得到root ...
- Python+Appium学习之启动手机APP或者浏览器
一.启动浏览器:pycharm中python脚本如下: from appium import webdriver desired_caps ={ 'platformName':'Android', ' ...
随机推荐
- PHP使用Apache中的ab(ApacheBench)测试网站的并发量
AB(ApacheBench) 是 Apache 自带的超文本传输协议 (HTTP) 性能测试工具. 其设计意图是描绘当前所安装的 Apache 的执行性能, 主要是显示 Apache 每秒可以处理多 ...
- 手把手教你“将系统安装在U盘”上,实现个人系统随身带!
本教程纯原创,转载请标注来源. 本教程适用安装的操作系统:Win XP,Win 7,优麒麟,Ubuntu,deepin,linux. 优盘要求:最好是USB3.0,USB2.0也可以,但是优盘至少要求 ...
- Java入门(一):Hello World !
前言 从今天开始,准备写Java Web开发的系列文章,毕竟自己主攻的还是Java方向,Python只是业余学习的兴趣使然,在第二技能还没有培养成熟前,做好第一技能的巩固和提高是很有必要的.从正式入行 ...
- LeetCode算法题-Remove Duplicates from Sorted List
这是悦乐书的第160次更新,第162篇原创 01 前情回顾 昨晚的爬楼梯算法题,有位朋友提了个思路,使用动态规划算法.介于篇幅问题,这里不细说动态规划算法,以后会在数据机构和算法的理论知识里细说. 昨 ...
- CSS鼠标悬浮DIV后显示DIV外的按钮
昨天写样式遇到个问题,如何让鼠标悬浮DIV后,显示DIV外的按钮,可以点击到按钮. 效果如下: 问题: 在DIV hover时候将按钮设为display: block,这是很直接的想法,但是这有个问题 ...
- 《Java大学教程》—第4章 方法的实现
4.2~3 声明.实现.调用4.4 数据传递:实参.形参.返回值4.6 变量作用域:局部变量(区域内访问).全局变量4.7 重载:运算符重载.方法重载-->多态 1.答:P67方法(method ...
- 在 PHP 7 中不要做的 10 件事
在 PHP 7 中不要做的 10 件事 1. 不要使用 mysql_ 函数 这一天终于来了,从此你不仅仅“不应该”使用mysql_函数.PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移到好 ...
- centos7下安装docker(17.3docker监控---cAdvisor)
cAdvisor是google开发的容器监控工具 1.在host上运行cadvisor容器 docker run -d -p 8080:8080 --name cadvisor -v /:/rootf ...
- CCF-201803-3-URL映射(模拟)
Problem CCF-201803-3-URL映射 Time Limit: 1000 mSec Problem Description URL 映射是诸如 Django.Ruby on Rails ...
- NET缓存框架CacheManager在混合式开发框架中的应用(1)-CacheManager的介绍和使用
在我们开发的很多分布式项目里面(如基于WCF服务.Web API服务方式),由于数据提供涉及到数据库的相关操作,如果客户端的并发数量超过一定的数量,那么数据库的请求处理则以爆发式增长,如果数据库服务器 ...