使用 uc-devtools 代替 uiautomatorviewer 查找定位H5元素

由于uiautomatorviewer 只能定位APP原生页面;

所以要定位app H5 页面内的元素 使用 uc-devtools 工具

要调试的Android 设备上已安装UC浏览器(Android 开发者版):下载地址。

安装成功如如显示:

usb链接调试手机并打开要调试定位的H5 webview 页面

然后在chrome浏览器内 输入 chrome://inspect/

浏览器内出现H5页面后,点击 inspect  就会打开 uc-devtools 工具,选中元素根据css/xpath方式定位即可


driver 配置

需要指定 chromedriver 指定版本的路径;(下面时yaml格式的配置,直接使用请删除注释)

appActivity: com.kk.duoku.ui.activitys.MainActivity
appPackage: com.coolclub.dk
deviceName: 8BNGK17907000030
noReset: 'True'
platformName: Android
platformVersion: '9'
resetKeyboard: 'True'
unicodeKeyboard: 'True'
automationName: 'UiAutomator2'
# 是否显示chromedriver的日志
showChromedriverLog: 'False'
#  H5元素定位必须
chromeOptions:androidProcess: org.chromium.content.app.Sandb
# chromedriver对应版本的绝对路径
chromedriverExecutableDir: D:\soft_install\Appium-windows-1.21.0\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win

启动appium时 开启自动下载chromedriver命令:

上一步指定 chromedriverExecutableDir,然后按照下面的命令启动appiu server 。 这样就不用关注什么chrome驱动版本关系了,haha .

appium --allow-insecure chromedriver_autodownload

获取页面context

def base_get_contexts(self):"""获取当前所有 contexts:return: list, 所有 contexts"""return self.driver.contextsdef base_get_current_context(self):"""返回当前页面的 context:return: str, 当前页面的 context"""return self.driver.current_context

原生页面与H5页面的切换

def base_swith_to_content_by_index(self, index):"""根据driver.contexts下标,切换到指定的 content:param index: contents列表角标:return:"""self.driver.switch_to.context(self.base_get_contexts[index])def base_swtich_to_content_by_context(self, context):"""切换到指定的 context:param context: str格式,self.driver.contexts[1]:return:"""self.driver.switch_to.context(context)

H5元素定位及操作

from appium.webdriver.common.touch_action import TouchAction
from selenium.webdriver import ActionChains
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditionsdef base_click_location(self, x, y):"""点击指定坐标位置:param x: x坐标:param y: y坐标:return:"""TouchAction(self.driver).press(x=x, y=y).release().perform()time.sleep(1)def base_clicks(self, index, arg):"""指定角标,点击多个元素内的某一个:param args: 元素定位方式, (By, XPATH):param index: 角标:return:"""elements = self.base_find_elements(arg)elements[index].click()time.sleep(1)def base_get_h5_view_title(self, full_title):"""判断页面标题是否完全一致:param title: 页面标题:return: True/False"""return self.base_find_element_expected(expected_conditions.title_is(title=full_title))def base_get_h5_view_contain_title(self, division_title):"""判断页面标题是否包含输入的标题:param division_title: 输入的标题:return: True/False"""return self.base_find_element_expected(expected_conditions.title_contains(title=division_title))def base_get_h5_view_selected_to_not(self, element):"""判断指定元素是否被选中:param element: 元素定位方式:return: True/False"""return self.base_find_element_expected(expected_conditions.element_to_be_selected(element))def base_get_h5_view_alerted(self):"""判断页面元素有没有 alert:return: alert 元素对象"""return self.base_find_element_expected(expected_conditions.alert_is_present())def base_get_h5_view_text_contain(self, arg, text):"""判断元素中的 text 是否包含指定的 text:param arg: 定位元素方式:param text: 包含的文案:return:"""return self.base_find_element_expected(expected_conditions.text_to_be_present_in_element(arg, text))def base_get_h5_view_attribute_text_contain(self, arg, text):"""判断某个元素的某个属性是否包含了指定了的 text:param arg: 元素定位方式:param text: 指定属性的 text:return:"""return self.base_find_element_expected(expected_conditions.text_to_be_present_in_element_value(arg, text))

多个 webview页面切换

实现方式:切换窗口 handler

APP 内点击打开多个webview页面时,需要根据切换到指定的页面才能进行操作;如果不切换的话,操作的还是之前的页面。

# 获取所有的webview的handler(窗口句柄)
driver.window_handles
# 获取当前可操作的webview的handler (窗口句柄)
driver.current_handler
# 切换到指定/最新的handle窗口
driver.switch_to.window(driver.window_handles[-1])

APP UI 自动化测试 H5页面元素定位相关推荐

  1. Appium 自动化测试 H5页面元素定位

    简介   在现在的移动端App中,由于开发效率.需求频繁变更的需求情况下,经常有相关的运营需求,经常要进行更新,如果全部采用原生开发,需要的成本比较高,后来就出现了内嵌的H5页面.那么这些H5页面元素 ...

  2. Android app UI自动化测试 常用的元素定位方法

    本文简要介绍了移动端Android APP进行UI自动化测试时,常用到的元素定位方法 目录 前言 一.通过resource-id定位 二.通过class name定位 三.通过accessibilit ...

  3. MuMu模拟器+Edge浏览器:Android原生APP嵌入的H5页面元素定位

    前提条件: 1.已安装MuMu模拟器 2.已配置adb环境 adb链接MuMu模拟器 C:\Users\shenyf>adb connect 127.0.0.1:7555 connected t ...

  4. UI自动化测试之八大元素定位方法(最新版)

    Selenium-UI自动化测试之八大元素定位方法(最新版) 前言 UI界面本质上就是HTML直接体现,脚本通过HTML标签信息来找到具体的元素. 元素定位:通过代码调用方法查找元素 一.ID定位 概 ...

  5. Appium常用操作及H5页面元素定位

    目录 1.去登录考研帮系统 2.高级手势操作 1.tap() 2.移动 move_to 3.滑屏操作 3.多点触控 multiAction 4.原生嵌套H5 1.去登录考研帮系统 import tim ...

  6. 关于app内嵌h5页面调用百度地图定位问题,为什么定位不准呢?

    关于app内嵌h5页面调用百度地图定位问题,为什么定位不准呢?以下为代码. 百度地图:里面有3种定位方式(a:浏览器定位,b:IP定位,c:定位SDK辅助定位),我选择第3种,是需要app那块添加些什 ...

  7. Appium APP UI自动化测试框架介绍

    APP UI自动化测试同样可以使用unittest框架,与web的UI自动化类似 整个自动化流程介绍 1) 会先从手工用例里面抽离出要做自动化的用例,在测试用例里面会加一个执行方式的标签,标明是手动还 ...

  8. BeautifulReport 实现app UI自动化测试

    修改了 BeautifulReport源码中的一些内容<附:BeautifulReport--适用于unittest自动化测试的可视化报告>; 1.生成截图时,原来的img文件夹必须在项目 ...

  9. 阿里p8呕心沥血整理出来的,APP UI自动化测试思路总结,速看

    首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去.接下来,一 ...

最新文章

  1. 140万!香港大学设高额博士奖学金
  2. uboot学习之BL3的流程
  3. Python编程基础:第二节 多重赋值Multiple Assignment
  4. hdu 4252(单调栈)
  5. Eclipse中代码编辑背景颜色修改和XML字体修改
  6. dart系列之:dart代码规范实践指南
  7. linux cron计划任务
  8. 【python】画一个爱心
  9. [vue] vue怎么缓存当前的组件?缓存后怎么更新?
  10. multisim中轻触开关在哪_现货供应轻触开关|品质确保|厂家直销
  11. Win10系列:JavaScript 模板绑定
  12. 产品经理之产品评审会(非原创)
  13. 如何使用Log4net创建日志及简单扩展
  14. Git下载并安装(完整、详细教程)
  15. Python爬取12306车次信息
  16. Hadoop基本原理
  17. 《安富莱嵌入式周报》第251期:2022.01.31--2022.02.06
  18. input单选框 复选框 点选不上 选不中
  19. tar 解压指定文件,解压到指定文件夹
  20. Outlook发送后,收到的邮件都是纯文本格式

热门文章

  1. 计算机毕业设计之Java+SSM的在线投票系统
  2. 标识和可追溯性要求_3条规则制定,设计和可追溯性的简单指南
  3. Linux —— 权限
  4. ICPC2017香港赛区游记
  5. C# WebAPI 集成WINDOWS验证
  6. 《the Great Gatsby》Day 27
  7. java发展瓶颈_作为Java程序员,该如何度过自身的瓶颈期?
  8. java程序员面试交流项目经验
  9. mysql双机配置_mysql 双机热备配置详解
  10. 网站打开速度慢的原因