【App自动化测试】(十五)手机浏览器(webview)自动化测试
创始人
2024-02-23 16:46:32

目录

  • 1. 手机浏览器自动化前提
    • 1.1 安装chromedriver
    • 1.2 安装对chromedriver版本
    • 1.3 配置capability
    • 1.4 设置chromedriver相关配置
    • 1.5 使用浏览器的inspect工具远程调试
  • 2. 手机浏览器测试代码python版本


1. 手机浏览器自动化前提

五大前提

  1. 安装chromedriver
  2. 安装对chromedriver版本
  3. 配置capability
  4. 设置chromedriver相关配置
  5. 使用浏览器的inspect工具远程调试

1.1 安装chromedriver

帖子:chromedriver下载地址与webview自动化关键代码

在以下文章中有说明,可以用于参考:
【App自动化测试】(十四)Android WebView测试方法中的 2.3.1 前提一:chromedriver安装

1.2 安装对chromedriver版本

在以下文章中有说明,可以用于参考:
【App自动化测试】(十四)Android WebView测试方法中的 2.3.2 前提二:chromedriver版本选择正确

1.3 配置capability

需要配置的capability参数

  1. browserName:chrome(新版本)/ browser(老版本)

注意:还可使用标准的appPackageappActivity,写明浏览器的包名和activity的名字。但是使用browserName是最简单的

  1. chromedriverExecutableDir:指定 chromedriver 可执行文件集合的目录

chromedriverExecutableDir的示例图:可使用不同名字的后缀进行chromedriver的版本区分
在这里插入图片描述

  1. showChromedriverLog:让appium 日志展示 chromedriver 的日志方便排查

1.4 设置chromedriver相关配置

appium chromedriver 自动发现机制中常用的appium capability参数参数:

  • chromedriverExecutableDir: 指定 chromedriver 可执行文件集合的目录
    • 将可用的chromedriver放在此目录下,当appium发现此配置项后,会去目录中寻找合适的chromedriver。
  • chromedriverChromeMappingFile: 允许显式指定版本对应关系
    • 强行指定一个版本的chromedriver去测特定的webview版本
  • showChromedriverLog: 让appium 日志展示 chromedriver 的日志方便排查

appium capability参数设置 ——python:

def setup(self):desired_caps = {"platformName":"Android","deviceName":"emulator-5554","appPackage": "com.example.android.apis","appActivity":".ApiDemos","chromedriverExecutableDir":"E:\chromedriver_webview_test","chromedriverChromeMappingFile":"E:\chromedriver_webview_test\mapping.json","showChromedriverLog":True}self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)# 使用隐式等待self.driver.implicitly_wait(10)

1.5 使用浏览器的inspect工具远程调试

说明:

练习的时候使用了三款模拟器:Avd Android6.0、Avd Android7.0、MUMU.
Avd Android6.0、Avd Android7.0在使用edge inspect远程调试的时候,出现解析混乱,dom无法正常加载的情况。不知道是不是因为webview版本较低导致的。MUMU模拟器则正常。

2. 手机浏览器测试代码python版本

"""
模拟器:MUMU
浏览器:MUMU自带浏览器
备注:
使用脚本访问百度并进行搜索的话会导致无法打开网址;但手动访问并搜索正常
相关问题解释帖子:https://ceshiren.com/t/topic/16195/4
"""from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWaitclass TestBrowser:def setup_class(self):desired_caps = {}desired_caps['platformName'] = 'Android'desired_caps['platformVersion'] = '6.0'desired_caps['deviceName'] = '127.0.0.1:7555'#python appium client 2.x 会默认使用w3c,因此此处使用chromeOptions参数吧w3cdesired_caps['chromeOptions'] = {'w3c': False}#方式一:desired_caps['browserName']= 'browser'#方式二:#还可使用标准的`appPackage`和`appActivity`,写明浏览器的包名和activity的名字。#desired_caps['appPackage'] = 'com.android.browser'#desired_caps['appActivity'] = 'com.android.browser.BrowserActivity'#设置chromedriver所在路径desired_caps['chromedriverExecutableDir']='E:\\chromedriver_webview_test'#开启chromedriverlogdesired_caps['showChromedriverLog']=Truedesired_caps['noReset'] = 'true'self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)# 使用隐式等待self.driver.implicitly_wait(10)def teardown(self):self.driver.quit()def test_browser(self):self.driver.get('https://www.sogou.com/')#使用方式二`appPackage`和`appActivity`话,需要切换上下文,要不然会报错#print(self.driver.contexts)#WebDriverWait(self.driver, 5).until(lambda driver: len(self.driver.contexts) > 1)#self.driver.switch_to.context('WEBVIEW_com.android.browser')self.driver.find_element(By.ID,'keyword').click()self.driver.find_element(By.ID,'keyword').send_keys("webview")self.driver.find_element(By.CLASS_NAME,'qbtn').click()assert_text=self.driver.find_element(By.XPATH,'//*[@class="vrResult"]//a/em').textassert assert_text=="WebView"

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...