首页 > 微信 > 详细

Appium案例之webview、小程序篇

时间:2021-02-27 23:59:58      阅读:51      评论:0      收藏:0      [点我收藏+]

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() 

 

以上。

 

Appium案例之webview、小程序篇

原文:https://www.cnblogs.com/big-white/p/14456869.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!