手机自动化测试:4.通过appium inspector 获取相关app的信息,以某团为例,点击,搜索,获取数据等。

0.使用inspector时,一定要把不相关的如weditor啥的退出去,否则,净是事。

1.从0开始的数据获取

 第一个位置,有时0.0.0.0,不可以的话,你就用这个。

第二个位置,抄上。

直接点击第三个启动。不要问为什么,问就是。我也不知道。

第一个错误:它说得有个平台名,好吧。

错误
Failed to create session. An unknown server-side error occurred while processing the command. Original error: You must include a platformName capability

添上

注意一定要添上如下

"appium:automationName": "UiAutomator2"

再次启动。OK了进来了。

 再次提醒,版本不一样,出错不一样,你根据出错的地方完善就可以。

2.获取某团相关

 自动点击手机上的某团,打开它。

 一个一个的点复制。

'getCurrentActivity' "com.meituan.android.pt.homepage.activity.MainActivity"
'getCurrentPackage' "com.sankuai.meituan"

 返回修改

{
  "appium:platformName": "Android",
  "appium:automationName": "UiAutomator2",
  "appium:appPackage": "com.sankuai.meituan",
  "appium:appActivity": "com.meituan.android.pt.homepage.activity.MainActivity"
}

 其他信息模仿吧。

通过adb获取信息

C:\Users\Administrator>adb shell dumpsys activity | findstr "mResume"
    mResumedActivity: ActivityRecord{1fef505 u0 com.sankuai.meituan/com.meituan.android.pt.homepage.activity.MainActivity t1097}

 形成测试代码:


from appium import webdriver
from appium.options.android import UiAutomator2Options
desired_caps = {
  "platformName": "Android",
  "platformVersion": "10",
  "deviceName": "Q5X7N19605002672",
  "appium:appPackage": "com.sankuai.meituan",
  "appium:appActivity": "com.meituan.android.pt.homepage.activity.MainActivity",
  "unicodeKeyboard": True,
  "resetKeyboard":True,
   "noReset":True,
  "appium:newCommandTimeout": 6000,
  "appium:automationName": "UiAutomator2"
}

if desired_caps is not None:
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', options=UiAutomator2Options().load_capabilities(desired_caps))
else:
    raise ValueError("desired_caps must not be None")

 运行成功。

用inspector进行附加。

利用代码启动某团,一定要利用pycharm中的代码进行,否则无效,原理很简单。就是通过appium互动留下的信息进行启动的。

再次刷新附加

界面示例:

3.点击某个元素、输入文本、搜索等。

点击超市便利为例:

 

 有一个结果,点击一下。看手机是否正常反映

有反映,记录之

(//android.widget.ImageView[@resource-id="com.sankuai.meituan:id/channel_icon"])[5]

 输入商店名称进行搜索:以下记得刷新,否则你明白 的。信息不准。

方法同上。

输入框定位后,点击一下。

//android.widget.LinearLayout[@resource-id="com.sankuai.meituan:id/minutes_animte_action_search"]/android.widget.LinearLayout[1]

进入新窗口

通过应用源一级级定位到最低级的编辑框位置。输入想要搜索的关键词。

//android.widget.EditText[@resource-id="com.sankuai.meituan:id/txt_search_keyword"]

如下图:

定位搜索按钮。

//android.widget.LinearLayout[@resource-id="com.sankuai.meituan:id/search_tv"]

来到以下页面。

点击排名第一个商店,进入商店 

 通过应用源一级级的定位,不再多说。

(//android.widget.FrameLayout[@resource-id="com.sankuai.meituan:id/mach_container_wrapper"])[2]

来到如图:

4.根据以上查证结果,生成py文件,进行自动操作。

提醒,以上其实是XPATH定位,不是最推荐的,但目前,用这个就行。

 以下代码,完整无伤通过。


from appium import webdriver
from appium.options.android import UiAutomator2Options
desired_caps = {
  "platformName": "Android",
  "platformVersion": "10",
  "deviceName": "Q5X7N19605002672",
  "appium:appPackage": "com.sankuai.meituan",
  "appium:appActivity": "com.meituan.android.pt.homepage.activity.MainActivity",
  "unicodeKeyboard": True,
  "resetKeyboard":True,
   "noReset":True,
  "appium:newCommandTimeout": 6000,
  "appium:automationName": "UiAutomator2"
}


driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', options=UiAutomator2Options().load_capabilities(desired_caps))

# 设置超时时间和重试间隔
timeout = 10
poll_frequency = 1
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

####################### 点击超市便利########################################################

element = WebDriverWait(driver, timeout, poll_frequency).until(
    EC.element_to_be_clickable((By.XPATH, '(//android.widget.ImageView[@resource-id="com.sankuai.meituan:id/channel_icon"])[5]'))
)
element.click()
######################### 点击搜索框########################################################
element = WebDriverWait(driver, timeout, poll_frequency).until(
    EC.element_to_be_clickable((By.XPATH, '//android.widget.LinearLayout[@resource-id="com.sankuai.meituan:id/minutes_animte_action_search"]/android.widget.LinearLayout[1]'))
)
element.click()
##################### 使用显式等待定位并输入文本############################################################
try:
    search_box = WebDriverWait(driver, timeout, poll_frequency).until(
        EC.presence_of_element_located((By.XPATH, "//android.widget.EditText[@resource-id='com.sankuai.meituan:id/txt_search_keyword']"))
    )
    search_box.send_keys("优小优")
except Exception as e:
    print(f"无法找到或操作元素: {e}")

########################## 点击搜索按钮#########################################################

element = WebDriverWait(driver, timeout, poll_frequency).until(
    EC.element_to_be_clickable((By.XPATH, '//android.widget.LinearLayout[@resource-id="com.sankuai.meituan:id/search_tv"]'))
)
element.click()

########################## 点击排名第一的商店#########################################################

element = WebDriverWait(driver, timeout, poll_frequency).until(
    EC.element_to_be_clickable((By.XPATH, '(//android.widget.FrameLayout[@resource-id="com.sankuai.meituan:id/mach_container_wrapper"])[2]'))
)
element.click()

 

 希望你也能一次无伤通过。

下一节,打算获取其商品数据。并保存之。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/695525.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读:Indoor Scene Layout Estimation from a Single Image

项目地址:https://github.com/leVirve/lsun-room/tree/master 发表时间:2018 icpr 场景理解,在现实交互的众多方面中,因其在增强现实(AR)等应用中的相关性而得到广泛关注。场景理解可以分为几个子任务&…

Makefile:从零开始入门Makefile

目录 1.前言 2.Makefile的简单介绍 3.Makefile中的指令规则 4.Makefile的执行流程 5.Makefile中的变量类型 6.Makefile中的模式匹配 7.Makefile中的函数 8.Makefile补充知识 前言 在Linux中编译CPP文件,我们能够使用GCC命令进行编译,但当项目文件多且繁杂…

如何利用pandas解析html的表格数据

如何利用pandas解析html的表格数据 我们在编写爬虫的过程中,经常使用的就是parsel、bs4、pyquery等解析库。在博主的工作中经常的需要解析表格形式的html页面,常规的写法是,解析table表格th作为表头,解析td标签作为表格的行数据 …

网站不收录的原因

随着互联网的发展,越来越多的网站被创建和更新,然而,并不是所有的网站都能被搜索引擎收录。有时候,这些网站会因为各种原因而被搜索引擎排除在搜索结果之外。下面我们来探讨一下网站不收录的原因。 首先,网站不收录可能…

贪心算法学习三

例题一 解法(贪⼼): 贪⼼策略: ⽤尽可能多的字符去构造回⽂串: a. 如果字符出现偶数个,那么全部都可以⽤来构造回⽂串; b. 如果字符出现奇数个,减去⼀个之后,剩下的…

12.【Orangepi Zero2】基于orangepi_Zero_2 Linux的智能家居项目

基于orangPi Zero 2的智能家居项目 需求及项目准备 语音接入控制各类家电,如客厅灯、卧室灯、风扇回顾二阶段的Socket编程,实现Sockect发送指令远程控制各类家电烟雾警报监测, 实时检查是否存在煤气泄漏或者火灾警情,当存在警情时…

Robust Tiny Object Detection in Aerial Images amidst Label Noise

文章目录 AbstractIntroductionRelated WorkMethodsClass-aware Label CorrectionUpdateFilteringTrend-guided Learning StrategyTrend-guided Label ReweightingRecurrent Box RegenerationExperimentpaper Abstract 精确检测遥感图像中的小目标非常困难,因为这类目标视觉信…

关于目前ggrcs包的报错解决方案

目前有不少粉丝私信我说使用ggrcs包出现如下错误 我查看了一下,目前报错来源于新版本后的RMS包,主要是预测函数的报错,这个只能等R包作者来修复这个错误。目前需要急用的话,我提供了一个方案,请看下面视频操作 关于目前…

外部排序快速入门详解:基本原理,败者树,置换-选择排序,最佳归并树

文章目录 外部排序1.最基本的外部排序原理2.外部排序的优化2.1 败者树优化方法2.2 置换-选择排序优化方法2.3 最佳归并树 外部排序 为什么要学习外部排序? 答: 在处理数据的过程中,我们需要把磁盘(外存)中存储的数据拿到内存中处理…

通过 Python+Nacos实现微服务,细解微服务架构

shigen坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 个人IP:shigen 背景 一直以来的想法比较多,然后就用Python编写各种代码脚本。很多…

在 Ubuntu 中安装 Docker

在 Ubuntu 中安装 Docker 首先,更新你的 Ubuntu 系统。 1、更新 Ubuntu 打开终端,依次运行下列命令: sudo apt update sudo apt upgrade sudo apt full-upgrade 2、添加 Docker 库 首先,安装必要的证书并允许 apt 包管理器…

AI数据分析:根据Excel表格数据绘制柱形图

工作任务:将Excel文件中2013年至2019年间线上图书的销售额,以条形图的形式呈现,每个条形的高度代表相应年份的销售额,同时在每个条形上方标注具体的销售额数值 在deepseek中输入提示词: 你是一个Python编程专家&#…

XMind v24.04.1 全功能VIP版(思维升级,效率飞跃)

软件介绍 XMind 是一款功能丰富的思维导图和创新构思工具,可在多个平台助力高效思考。它涵盖了从灵感触发、结构构建到演示展示的完整思维过程,有效提升创建思维导图的效率。这款工具适用于记录灵感、创新思维、问题解决和效率提升等多元场景&#xff0…

GEE训练教程——如何确定几何形状的中心点坐标和相交的坐标

简介 在GEE中,可以使用.geometry()方法来获取几何形状的中心点坐标和相交的坐标。 首先,使用.geometry()方法获取几何形状的几何信息,然后使用.centroid()方法获取几何形状的中心点坐标。示例代码如下: // 获取几何形状的中心点…

Golang | Leetcode Golang题解之第132题分割回文串II

题目&#xff1a; 题解&#xff1a; func minCut(s string) int {n : len(s)g : make([][]bool, n)for i : range g {g[i] make([]bool, n)for j : range g[i] {g[i][j] true}}for i : n - 1; i > 0; i-- {for j : i 1; j < n; j {g[i][j] s[i] s[j] && g[…

【Linux文件篇】系统文件、文件描述符与重定向的实用指南

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; 前言&#xff1a;相信大家对文件都不会太陌生、也不会太熟悉。在没有学习Linux操作系统时&#xff0c;我们在学习C或C时都学过如何去创建、打开、读写等待文件的操作&#xff0c;知道一些语言级别的一些接口与函数。但…

【C++题解】1389 - 数据分析

问题&#xff1a;1389 - 数据分析 类型&#xff1a;简单循环 题目描述&#xff1a; 该方法的操作方式为&#xff0c;如果要传递 2 个数字信息给友军&#xff0c;会直接传递给友军一个整数 n&#xff08;n 是一个 10 位以内的整数&#xff09;&#xff0c;该整数的长度代表要传…

Python私教张大鹏 Vue3整合AntDesignVue之Breadcrumb 面包屑

显示当前页面在系统层级结构中的位置&#xff0c;并能向上返回。 何时使用 当系统拥有超过两级以上的层级结构时&#xff1b; 当需要告知用户『你在哪里』时&#xff1b; 当需要向上导航的功能时。 案例&#xff1a;面包屑导航基本使用 核心代码&#xff1a; <template…

[spring] Spring MVC Thymeleaf(上)

[spring] Spring MVC & Thymeleaf&#xff08;上&#xff09; 本章内容主要过一下简单的 Spring MVC 的案例 简单来说&#xff0c;spring mvc 就是比较传统的网页开发流程&#xff0c;目前 boot 是可以比较轻松的配置 thymeleaf——毕竟 spring boot 内置对 thymeleaf 的…

快速开始一个go程序(极简-快速入门)

一、 实验介绍 1.1 实验简介 为了能更高效地使用语言进行编码&#xff0c;Go 语言有自己的哲学和编程习惯。Go 语言的设计者们从编程效率出发设计了这门语言&#xff0c;但又不会丢掉访问底层程序结构的能力。设计者们通过一组最少的关键字、内置的方法和语法&#xff0c;最终…