在App开发过程中,很容易用到第三方的WebView控件,这个属于移动端混合型App。在我们做自动化测试的过程中,就要对这种情况进行处理,最通用的办法就是先将appium切换到webview模式然后按查找web元素的方法对WebView里面的元素进行操作即可。具体实施方法,可以参考:http://www.tuicool.com/articles/bIBRZze

可是也有很多情况,如新浪微博第三方授权登录页面(如图一),这个嵌入到App中的第三方WebView,在查上下文信息的时候,找不到对应的WebView。

图一:网易新闻客户端新浪微博授权

查找当前可用的上下文信息的时候,用如下代码:

contexts=self.driver.contexts

for cotext in contexts:

print cotext

根据输出的信息,如果有WebView信息的时候,可以切换:

driver.switch_to.context("WEBVIEW")

或是 driver.context(“WEBVIEW”)

但是一直找不到WebView信息,如图二所示,此时就没有办法进行切换。

图二,获取上下文信息的显示结果

于是尝试了各种办法,都没有实现。最后只好用以下最笨的办法了,模拟点击屏幕:

def test_login(self):

#单击网易新闻客户端的登录按钮

time.sleep(10)

lgin=self.driver.find_element_by_id("com.netease.newsreader.activity:id/login_icon")

lgin.click()

time.sleep(2)       lgbt=self.driver.find_element_by_id("com.netease.newsreader.activity:id/biz_pc_main_info_profile_avatar")

lgbt.click()

time.sleep(2)

#单击新浪微博的登录按钮

sinalg=self.driver.find_element_by_id("com.netease.newsreader.activity:id/sinaweibo_name")

sinalg.click()

#***以下为模拟单击屏幕操作

time.sleep(3)

#单击输入用户名:sxf

self.driver.tap([(150,588),])

time.sleep(3)

self.driver.tap([(230,1516),])

self.driver.tap([(330,1681),])

self.driver.tap([(440,1516),])

#输入密码:123

self.driver.tap([(212,776),])

time.sleep(3)

self.driver.tap([(72,1236),])

self.driver.tap([(180,1236),])

self.driver.tap([(263,1236),])

time.sleep(3)

#单击登录按钮

self.driver.tap([(520,912),])

time.sleep(10)

上面的模拟单击操作,可以单击输入框调出键盘,然后再去单击键盘上面的按钮,达到输入信息的目的。定位屏幕上面的座标,可以通过网页:http://bbs.anjian.com/thread-519563-1-1.html 上面的方法。

通过模拟点击键盘操作,可以实现对无法查找到的WebView上面的元素进行操作,可是无法获取上面元素的内容,无法验证操作后的结果。这是一个很大的问题,目前在网上查找了一下,也没有找到好的办法,可能随着appium的发展会有解决办法的。也许有好的办法,我没有找到,后续我会努力找到好的解决办法,到时候再和大家共享。

原文:http://blog.sina.com.cn/s/blog_68f262210102v92p.html

Appium自动化WebView中元素的操作的更多相关文章

  1. appium自动化测试之UIautomatorviewer元素定位

    appium自动化测试之UIautomatorviewer元素定位 标签(空格分隔): uiautomatorviewer元素定位 前面的章节,已经总结了怎么搭建环境,怎样成功启动一个APP了,这里具 ...

  2. python+Appium自动化:H5元素定位

    问题思考 在混合开发的App中,经常会有内嵌的H5页面.那么这些H5页面元素该如何进行定位操作呢? 解决思路 针对这种场景直接使用前面所讲的方法来进行定位是行不通的,因为前面的都是基于Andriod原 ...

  3. appium自动化webview时遇到的chromedriver问题

    安卓app里面的网页,基本上都是使用手机系统上的webview 去显示的. 安卓 webview 可以看成是 手机上的 chrome 浏览器精简版. appium desktop 里面内置了 用于 w ...

  4. python+Appium自动化:id元素定位

    元素定位 与web自动化一样,app自动化元素定位也是非常重要的一环,,appium也是提供了很多元素定位的方法,比如:id.name.class.层级定位等等. 元素定位方式 id name cla ...

  5. 【WebView】Android WebView中的Cookie操作

    Hybrid App(混合式应用)的开发过程中少不了与WebView的交互,在涉及到账户体系的产品中,包含了一种登录状态的传递.比如,在Native(原生)界面的登录操作,进入到Web界面时,涉及到账 ...

  6. python+Appium自动化:各种元素定位方法

    name定位 driver.find_element_by_name('飞利浦净水').click() 测试结果报错:selenium.common.exceptions.InvalidSelecto ...

  7. Appium自动化(10) - appium高级元素定位方式之 UI Automator API 的详解

    如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html 前言 前面介绍过根据id,clas ...

  8. Appium之WebView自动化

    WebView的测试:主要作用在混合(Hybrid)的应用 * 一部分是原生界面和代码,而另一部分是内嵌网页 * 比如微信.支付宝 * 内嵌了一个浏览器内核,由浏览器内核实现的 安卓应用中的内嵌的展示 ...

  9. python3+Appium自动化12-H5元素定位环境搭建

    前言 在混合开发的App中,经常会有内嵌的H5页面.那么这些H5页面元素该如何进行定位操作呢? 针对这种场景直接使用前面所讲的方法来进行定位是行不通的,因为前面的都是基于Andriod原生控件进行元素 ...

随机推荐

  1. 网络传播模型Python代码实现

    SI模型 import numpy as np import matplotlib.pyplot as plt import smallworld as sw #邻接矩阵 a = sw.a # 感染率 ...

  2. JWT的优点和实现Token认证的安全问题

    JWT的优点和实现Token认证的安全问题 一.什么是JWT JWT——Json web token  是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准,可实现无状态.分布式的Web应 ...

  3. Android常用adb命令总结(二)

    adb shell 命令 简单点讲,adb 命令是 adb 这个程序自带的一些命令,而 adb shell 则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Andr ...

  4. Mac下如何复制webp图片

      将 WebP 格式图片拖到 Chrome 浏览器标签栏中(浏览器是肯定支持查看的,而且是 Google 自家的),这个时候图片是能够正常查看的.我们右键选中图片,选择「复制图片」. 打开 macO ...

  5. ajax运行原理

    Ajax应用程序的加载过程与传统的Web应用程序类似.某个用户操作引发浏览器的一次HTTP请求.服务器接收请求并处理这个请求,生成合适的执行结果发送至客户端.客户端浏览器经过处理将数据(HTML+CS ...

  6. [转]Apache Doris资料汇总

    参考资料 https://www.toutiao.com/i6709706901770207748/?tt_from=weixin&utm_campaign=client_share& ...

  7. 【mysql】Mysql5.7--sys_schema视图

    前言: MySQL 5.7中引入了一个新的sys schema,sys是一个MySQL自带的系统库,在安装MySQL 5.7以后的版本,使用mysqld进行初始化时,会自动创建sys库. sys库里面 ...

  8. 转载:点云上实时三维目标检测的欧拉区域方案 ----Complex-YOLO

    感觉是机器翻译,好多地方不通顺,凑合看看 原文名称:Complex-YOLO: An Euler-Region-Proposal for  Real-time 3D Object Detection ...

  9. Java开发桌面程序学习(七)——ImageView设置图片以及jar包读取fxml文件

    ImageView设置图片 JavaFx的ImageView,设置图片不能直接通过属性设置,只能通过代码来设置 ImageView设置图片 首先,我们让fxml对应的那个controller的java ...

  10. .net WebApi 批量文件进行压缩zip以二进制流传输至前端(Vue)下载

    前言:最近接了个项目,需要进行将服务端生成的文件进行打包压缩供前端下载,百度查了下资料,决定采用SharpZipLib C#开园的压缩解压库进行服务器文件压缩,在实现过程,郁闷的是前端接收下载下来的压 ...