热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Appium案例之webview、小程序篇

webview简介:在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件。如果把一个浏览器比作一辆汽车,我们可以认为webkit

webview简介:

在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件。如果把一个浏览器比作一辆汽车,我们可以认为webkit内核是他们的发动机,WebView是这辆车的引擎加传动装置。安卓系统中默认自带的webview包名为com.android.webview。

Webview是chrome浏览器的内核,所有安卓手机必须预装,用于显示网页,手机的APP可以调用它显示网页而不需要浏览器,升级以提升系统整体集成应用的网页性能。此应用缺失会导致手机功能故障。

所以当app处于h5或者小程序页面时,普通的定位工具根本就无法定位的到,所以这个时候就需要用到一款工具来辅助定位

inspect:

在谷歌浏览器的地址中输入chrome://inspect/#devices

 

可以查看的到已链接到的设备,如果查看不到,开启手机调试模式,以及电脑要确保adb环境。

手机谷歌浏览器打开一个页面后,inspect即可出现对应的链接,点击inspect即可打开页面定位工具。

 

但由于国内被墙等原因,导致打开空白或者显示404,那么只能换另外一款工具了,这里推荐使用ucdevtools

下载链接点击这里,下载安装后即可使用,打开后界面如下

 使用方法也是点击inspect即可,如果打开空白,可以在设置里改成使用本地资源,小程序也是同理,下面就可以愉快的定位啦

编写脚本:

因为是要用到Chromedriver,在上面的ucdevtools工具即可看到对应的版本,去点击下载地址下载对应版本的即可

查看webview进程需要用到如下命令

adb shell dumpsys activity top | grep "ACTIVITY"   ====mac

adb shell dumpsys activity top | find "ACTIVITY"   =====win

查到对应的进程的pid后使用命令 adb shell ps xxx 即可查看当前webview进程,如下图所示

 浏览器操作的代码如下:

#作者:windfall
#
配置我就不贴全了,这里主要是要添加对应的chromedriver地址以及当前webview的进程
desired_caps['chromedriverExecutable']='/Users/chenghaoai/Desktop/appium/chromedriver'
desired_caps[
'noReset']=True
desired_caps[
'chromeOptions']={'androidProcess':'com.android.chrome'}
time.sleep(
5)
con1
=driver.contexts #获取当前的webview
print('当前的context是:{}'.format(con1)) #打印出来
time.sleep(3)
driver.switch_to.context(
'WEBVIEW_chrome') #选择对应的webview
hand=driver.window_handles #获取窗口
print('当前hand是:{}'.format(hand))
driver.switch_to.window(
'CDwindow-0') #选择对应的窗口
#
这里开始就可以使用web定位方式了
driver.find_element_by_xpath('//input[@type="search"]').click()
driver.find_element_by_xpath(
'//input[@type="search"]').send_keys("ceshi")
time.sleep(
1)
driver.find_element_by_xpath(
'//button[text()="百度一下"]').click()
time.sleep(
1)
driver.find_element_by_xpath(
'//span[text()="视频"]').click()

小程序的操作代码如下:

#作者:windfall
#
配置就不贴全了,还是贴重要的
#
重点是选择Chrome对应的版本和路径,小程序对应的版本和刚刚浏览器的不一样
#
小程序的进程还是刚刚的命令就能查询的到
desired_caps['chromedriverExecutable']='/Users/chenghaoai/Desktop/appium/chromedriver'
desired_caps[
'noReset']=True
desired_caps[
'chromeOptions']={'androidProcess':'com.tencent.mm:appbrand0'}
driver.swipe(
493,646,497,1437) #页面下滑进入小程序列表
t1=t1=TouchAction(driver)
t1.tap(x
=176,y=416).perform() #通过坐标点击拼多多
time.sleep(5)
con1
=driver.contexts #获取webview
print('当前页面的context是:{}'.format(con1))
driver.switch_to.context(
'WEBVIEW_com.tencent.mm:appbrand0') #选择对应的
print("切换成功")
time.sleep(
5)
hand1
=driver.window_handles #获取窗口
print('当前页面handles为:{}'.format(hand1))
for x in hand1: #这里因为实际有好几个窗口,所以用循环来遍历
driver.switch_to.window(x)
if "拼多多" in driver.page_source:
break
print("成功")
time.sleep(
3)
driver.find_element_by_xpath(
'//wx-view[text()="女装"]').click()
time.sleep(
1)
driver.find_element_by_xpath(
'//wx-view[text()="百亿补贴" and @class="x-93--title"]').click()
time.sleep(
3)
driver.switch_to.context(
'NATIVE_APP')
driver.press_keycode(
4)
time.sleep(
1)
driver.press_keycode(
4)
#driver.find_element_by_xpath('//*[@content-desc="返回"]').click()
driver.find_element_by_xpath('//*[@text="微信"]').click()

 

以上。

 



推荐阅读
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • PyQt5 QTextEdit:深入解析Python中多功能GUI库的应用与实现
    本文详细探讨了 PyQt5 中 QTextEdit 组件在 Python 多功能 GUI 库中的应用与实现。PyQt5 是 Qt 框架的 Python 绑定,提供了超过 620 个类和 6000 个函数及方法,广泛应用于跨平台应用程序开发。QTextEdit 作为其中的重要组件,支持丰富的文本编辑功能,如富文本格式、文本高亮和自定义样式等。PyQt5 的流行性不仅在于其强大的功能,还在于其易用性和灵活性,使其成为开发复杂用户界面的理想选择。 ... [详细]
  • 【Python爬虫实操】 不创作小说,专精网站内容迁移,超高效!(含源代码)
    本文详细介绍了如何利用Python爬虫技术实现高效网站内容迁移,涵盖前端、后端及Android相关知识点。通过具体实例和源代码,展示了如何精准抓取并迁移网站内容,适合对Python爬虫实战感兴趣的开发者参考。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 在第10天的夜灵HTML日志中,我们深入探讨了浏览器兼容性和高级选择器的应用。CSS3引入了许多新属性,但在旧版浏览器中的支持情况并不理想。然而,目前主流浏览器的最新版本已全面支持这些新特性。对于那些不支持CSS3新属性的浏览器,我们提供了多种解决方案,以确保网站在不同环境下的兼容性和用户体验。此外,我们还详细讨论了如何利用高级选择器提升页面布局的灵活性和可维护性。 ... [详细]
  • 在今天的实践中,我深入学习了网页图像抓取技术,通过编写爬虫程序批量获取网站上的图片资源。具体来说,我选择了一个包含大量高质量图片的网站作为练习对象,并成功实现了将这些图片批量下载到本地存储。这一过程不仅提升了我对爬虫技术的理解,还增强了我的编程能力。 ... [详细]
  • 本文介绍了使用 Python 编程语言高效抓取微博文本和动态网页图像数据的方法。通过详细的示例代码,展示了如何利用爬虫技术获取微博内容和动态图片,为数据采集和分析提供了实用的技术支持。对于对网络数据抓取感兴趣的读者,本文具有较高的参考价值。 ... [详细]
  • HTML5大文件传输技术深度解析与实践分享
    本文深入探讨了HTML5在Web前端开发中实现大文件上传的技术细节与实践方法。通过实例分析,详细讲解了如何利用HTML5的相关特性高效、稳定地处理大文件传输问题,并提供了可供参考的代码示例和解决方案。此外,文章还讨论了常见的技术挑战及优化策略,旨在帮助开发者更好地理解和应用HTML5大文件上传技术。 ... [详细]
  • 在前一篇文章中,我们介绍了如何使用Requests库发送GET请求。本文将深入探讨如何通过Requests库发送POST请求,包括参数格式、请求封装等关键技巧,并通过“历史上的今天”API实例进行详细说明。 ... [详细]
  • 使用 Vue 集成 iScroll 实现移动端表格横向滚动与固定列功能 ... [详细]
  • 本文介绍了如何利用摄像头捕捉图像,并将捕获的图像数据保存为文件。通过详细的代码示例,展示了摄像头调用的具体实现方法,适用于多种应用场景,如安全监控、图像处理等。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 触发器的稳态数量分析及其应用价值
    本文对数据库中的SQL触发器进行了稳态数量的详细分析,探讨了其在实际应用中的重要价值。通过研究触发器在不同场景下的表现,揭示了其在数据完整性和业务逻辑自动化方面的关键作用。此外,还介绍了如何在Ubuntu 22.04环境下配置和使用触发器,以及在Tomcat和SQLite等平台上的具体实现方法。 ... [详细]
author-avatar
ryan__bug
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有