h5页面元素定位_appium在H5界面元素定位

在平常的一些测试工作中我们不免会遇到H5界面,那么遇到H5界面元素该如何进行定位操作呢?

针对这种H5场景我们使用平时原生定位方法是行不通的,只针对Android原生空间进行元素定位,而对于web网页的事单独的B/S架构,两者运行环境不同因此需要我们切换,在针对H5界面元素进行定位操作。

Context

在程序中context我们可以理解为当前对象在程序中所处的一个环境。比如前面提到的App一个界面是属于Activity类型,也就是Android界面环境,但是当访问内嵌的网页是属于另外一个环境(网页环境),两者处于不同的一个环境。

webview

webview是Android系统提供能显示网页的系统空间,它是一个特殊的View,同时特也是一个ViewGroup,可以有很多其他的子view。

在Android 4.4以下(不包含4.4)系统WebView底层实现是采用 WebKit(http://www.webkit.org/)内核,而在Android 4.4及其以上Google 采用了chromium(http://www.chromium.org/)作为系统WebView的底层内核支持。

H5 元素定位的环境准备

1.Chrome PC浏览器 下载地址: https://www.chromedownloads.net/

2.手机版本Chrome (关于手机版本的Chrome下载可以去Google paly去安装,手机中没有Google paly 可以先下载一个go 谷歌安装器)

3.Chrome driver 下载地址:ChromeDriver Mirror

注意:chrome driver要与Chrome的版本对应:

Chromedriver路径一般唯一appium路径C盘中的...node_modulesappium-chromedriverchromedriver 里面,运行Chromedriver.exe可以查看当前版本信息

4.雷电模拟器(我这里用的是雷电模拟器)

5.dr.fone app 3.2.0

操作步骤:

  1. 手机与电脑连接,开启USB调试模式,通过adb devices可查看到此设备。(设备系统Android 5.0以上)
  2. 电脑端、移动端必须安装chrome浏览器。(尽量保证移动端chrome版本与PC端一致)根据对应的Chrome浏览器版本安装对应的Chrome driver。
  3. App Webview开启debug模式
  4. 在电脑端Chrome浏览器地址栏输入chrome://inspect/#devices,进入调试模式
  5. 执行测试脚本

Webview 调试模式检查与开启

打开APP对应的H5界面,使用PC端谷歌进入chrome://inspect/#devices界面,检查是否显示webview,如果没有显示,则当前为开启调试模式。

开启方式:

在app中配置如下代码(在WebView类中调用静态方法 setWebContentDebuggingEnabled):

if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKAT) {  
 WebView.setWebContentsDebuggingEnabled(true);

此段代码需要APP开发人员开启。

测试环境

  • 测试设备:雷电模拟器 Android 7.1.2 /Chrome 70
  • PC系统环境: Win10 64bit /Chrome 80.0
  • 测试app: dr.fone3.2.0.apk
  • H5页面地址:https://drfone.wondershare.com/backup.html

实际操作:

我们进入APP的H5界面然后打开调试调试模式地址

79e1e1db334e18d57b54666a810d5ed2.png

可以看出该界面已经显示出来地址,复制当前H5界面地址,进入可以查看到APP中界面一致。

PC端网页界面显示如下:

748e352e67ae4af3a347ac779a20d8ac.png

手机APP端H5界面显示如下:

931aacf0659b1633951b52f32d38659a.png

相关代码实现:

app_H5.py

# -*- coding: utf-8 -*-
from  appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from time import sleep
desired_caps={}
desired_caps['platformName']='Android'
desired_caps['platformVersion']='7.1.2'
desired_caps['deviceName']='emulator-5554'
desired_caps['app']=r"C:UsersPCDesktoph5.apk"
desired_caps['appPackage']='com.wondershare.drfone'
desired_caps['appActivity']='com.wondershare.drfone.ui.activity.WelcomeActivity'

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.implicitly_wait(5)

print('click BackupBtn')
driver.find_element_by_id('com.wondershare.drfone:id/btnBackup').click()
WebDriverWait(driver,8).until(lambda x:x.find_element_by_id('com.wondershare.drfone:id/btnRecoverData'))
print('click NextBtn')
driver.find_element_by_id('com.wondershare.drfone:id/btnRecoverData').click()

driver.implicitly_wait(5)
contexts=driver.contexts
print(contexts)
driver.switch_to.context('WEBVIEW_com.wondershare.drfone')
WebDriverWait(driver,8).until(lambda x:x.find_element_by_id('email'))
driver.find_element_by_id('email').send_keys('shuqing@wondershare.cn')
print('click send')
driver.find_element_by_class_name('btn_send').click()
driver.switch_to.context('NATIVE_APP')
#切换context
driver.find_element_by_class_name('android.widget.ImageButton').click()

注意:仔细检查APP中webview的Chrome版本与Chromedriver版本的匹配,还有system webview的版本也要注意匹配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值