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


1.去登录考研帮系统

import time
from time import sleep

from appium import webdriver
#  用python代码去做app自动化 先要获取 app程序的手机信息
#  手机配置信息 我们统一写在info中
info = {
   
    #操作平台
    'platformName':'Android',
    #版本号
    'platformVersion':'7.1.2',
    #设备信息 可自由编写 不能为空 不能为中文
    'deviceName':'127.0.0.1:62001',
    # 包名
    'appPackage':'com.tal.kaoyan',
    #界面名/入口名
    #界面名 在这里要注意填写的界面名并不是app打开的第一页的字符码
    #当前包名和界面名获取的方式:cmd - adb shell dumpsys window | findstr mCurrentFocus
    # 获取入口名
    # 1.有apk的情况下获取包名和入口名 cmd - aapt dump badging 文件拖拽
    # 2.apk的包不见了,又想获取入口名,那我们可以通过monkey命令来获取
    # 1. adb shell pm list packages -3
    # 2. adb shell monkey -p 包名 -v-v-v 1
    # 其中onent的后面就是入口名 末尾的end不要带
    #有apk的
    'appActivity':'com.tal.kaoyan.ui.activity.SplashActivity',
    #重置
    'noReset':False
}



# 手机配置信息写好后,我们就可以启动手机程序 使用webdriver
# Remote必填IP+端口 手机配置信息
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',info)
driver.implicitly_wait(3)

# 启动后展示3秒


# 点击取消
driver.find_element('id','android:id/button2').click()
# 点击跳过
# driver.find_element('id','com.tal.kaoyan:id/tv_skip').click()

# 通过固定元素定位操作遇到多种机型可能出现定位越界 可以通过先获取手机屏幕大小/宽高 按百分比去设置
# 怎么获取 通过selenium webdriver常用函数
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
print('手机宽度{},手机高度{}'.format(x,y))
time.sleep(1)
driver.swipe(x*0.9,y*0.8,x*0.1,y*0.8,1000)
time.sleep(1)
driver.swipe(x*0.9
### Appium 元素定位方法 #### ID 定位 ID 是最常用也是效率最高的定位方式之一。通过唯一标识符来查找元素,这种方式不仅快速而且稳定。 ```java driver.findElement(By.id("com.example:id/button")); ``` 此代码片段展示了如何利用 `By.id` 方法找到具有特定 ID 的按钮组件[^1]。 #### Class Name 定位 当应用中的多个视图共享相同的类名时可以采用此类方式进行筛选。需要注意的是,在复杂界面下可能会返回多个匹配项,因此可能需要进一步限定条件以确保准确性。 ```java List<WebElement> elements = driver.findElements(By.className("android.widget.EditText")); elements.get(0).sendKeys("input text"); ``` 这段 Java 代码说明了怎样选取第一个编辑框并输入文字[^2]。 #### XPath 定位 XPath 提供了一种灵活的选择机制,允许基于属性值或其他特征精确定位单个或一组节点。对于那些难以用简单选择器表达的情况特别有用。 ```xml // 使用绝对路径 WebElement element = driver.findElement(By.xpath("/hierarchy/android.widget.FrameLayout[1]/...")); // 或者相对路径配合属性过滤 WebElement element = driver.findElement(By.xpath("//android.widget.TextView[@text='Login']")); ``` 这里给出了两种不同类型的 XPath 表达式的例子:一种是指定完整层次结构;另一种则是仅指定目标标签及其特性。 #### UI Automator 定位 UIAutomator Viewer 工具可以帮助开发者更好地理解应用程序的布局,并构建更精确的选择器字符串用于测试框架中。它支持按文本、资源 id 和其他可见属性来进行查询。 ```java UiSelector().resourceId("com.package.name:id/resource_id").click(); ``` 上述命令演示了调用 UiSelector 来点击某个带有给定 resourceId 的控件的操作[^4]。 #### Accessibility Id (Content Description) 定位 这种方法适用于 Android 平台上的无障碍服务功能。如果界面上某些不可见但可交互的对象没有合适的视觉表示,则可以通过设置 contentDescription 属性实现间接访问。 ```java driver.findElement(MobileBy.AccessibilityId("Settings")).click(); ``` 该语句实现了依据 accessibility id 找到名为 "Settings" 的项目并触发其点击事件的功能。 --- 为了提高定位成功率和稳定性: - 尽量优先考虑使用 ID 或者 Content Description 这样的独特标志作为首选方案; - 对于动态变化的内容(比如列表项),尝试结合 index 参数或者自定义谓词逻辑缩小范围; - 面向 H5 页面内的 Web 组件时切换上下文至 WebView 模式再继续下一步骤[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

司小幽

真诚赞赏,手留余香。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值