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处理的更多相关文章

  1. python+appium学习总结

    经过了这个月的学习,今天终于完成了公司APP系统的自动化的脚本的编写. 通过单元测试框架UNITTEST,进行脚本的连跑,本来还想把测试数据统一写到EXCEL表格内,实现脚本与数据的分离. 后来发现增 ...

  2. [python][django学习篇][3]创建django web的数据库模型

    推荐学习博客:http://pythonzh.cn/post/8/ 博客或者web界面向用户展示内容,它需要从某个地方获取博客内容或者web界面内容,才能够展示出来.通常来说:某个地方指的就是数据库 ...

  3. Python 基础学习篇

    注:技术尚浅,时间匆忙,如有错误或者不当之处值得商榷的,请留言,吾必思而改之. 第一篇 :Python基础- 安装/变量/输入/及循环语句使用 第二篇:  Python基础- 常用数据类型 第三篇: ...

  4. [python][django学习篇[13]增加markdown_1

    1 进入虚拟环境,安装markdwon  python install markdown 2 修改视图函数detail def detail(request, pk): # get_object_or ...

  5. [python][django学习篇][5]选择数据库版本(默认SQLite3) 与操作数据库

    推荐学习博客:http://zmrenwu.com/post/6/ 选择数据库版本(SQLite3) 如果想选择MySQL等版本数据库,请先安装MySQL并且安装python mysql驱动,这里不做 ...

  6. [python][django学习篇][4]django完成数据库代码翻译:迁移数据库(migration)

    上一篇我们已经完成数据库的设计,但是仅仅是python语言,并没有真正创建了数据库表.翻译成数据库语言,真正创建数据库表由django manage.py来实现,这一过程专业术语:迁移数据库 切换到m ...

  7. [python 函数学习篇]默认参数

    python函数: 默认参数: retries= 这种形式 def ask_ok(prompt, retries=, complaint='Yes or no, please!'): while Tr ...

  8. [python xml 学习篇][0]

    tree = ET.parse("Result.xml")root = tree.getroot()print type(root)print root.tag # 得到root ...

  9. Python+Appium学习之启动手机APP或者浏览器

    一.启动浏览器:pycharm中python脚本如下: from appium import webdriver desired_caps ={ 'platformName':'Android', ' ...

随机推荐

  1. Ubuntu 无法进行SSH连接,开启22端口

    我们在VM中安装好Ubuntu 虚拟机后,经常需要使用Xshell等工具进行远程连接,但是会出现无法连接的问题,原因是Ubuntu中默认关闭了SSH 服务. 1. 查看Ubuntu虚拟机IP地址: 命 ...

  2. 【Teradata】日期类型计算

    1.EXTRACT(抽取年/月/日/时/分/秒)  //抽取年/月/日/时/分/秒 SELECT EXTRACT (YEAR FROM CURRENT_DATE); SELECT EXTRACT (M ...

  3. Teradata的DBQL使用

    1.赋权 grant exec on DBC.DBQLAccessMacro to Sysdba with grant option; 2.刷新DBQL或TDWM缓存到磁盘,立即能在数据库中查询到刚刚 ...

  4. nginx 学习笔记

    Nginx是一个自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作 ...

  5. 关于 chrome canary X64 在 win7 64bit 下面缺少openvr_api.dll的解决方法

    在github上下载openvr_api.dll放到chrome的安装目录下就可以. 其实放到系统目录下最好,以后其他程序要使用的时候也能使用的到. https://github.com/ValveS ...

  6. 【vue】vue中实现导出excel

    1.安装依赖 cnpm install -S file-saver xlsx cnpm install -D script-loader 2.例如在src文件夹中新建一个名为vendor(vendor ...

  7. 吴恩达课后作业学习1-week4-homework-multi-hidden-layer -2

    参考:https://blog.csdn.net/u013733326/article/details/79767169 希望大家直接到上面的网址去查看代码,下面是本人的笔记 实现多层神经网络 1.准 ...

  8. DeeplabV3+ 在自己环境下跑出现的错误

    1. no module named 'deeplab' 解决办法:把 models/research 和 models/research/slim 加到环境变量path中不管用,需要在 cmd 中运 ...

  9. 前向星&链式前向星

    参考博文: https://blog.csdn.net/acdreamers/article/details/16902023 前向星 len[i]以i为起点的边在数组中的存储长度 head[i]以i ...

  10. Flink知识点

    1. Flink.Storm.Sparkstreaming对比 Storm只支持流处理任务,数据是一条一条的源源不断地处理,而MapReduce.spark只支持批处理任务,spark-streami ...