AirtestProject 遇到时间控件怎么办?不要慌,教你轻松拿下

fishfish-yu · 2024年03月28日 · 1921 次阅读

此文章来源于项目官方公众号:“AirtestProject”\
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

1.前言

很多同学在测试场景中总会遇到各种各样的小控件需要进行测试的,包括在 Android 端,web 端等等都有,那么今天我们来看看当我们在遇到时间控件的时候,我们应该如何进行自动化测试。

2.在 Android 设备上处理时间控件

在 Android 端上时间控件会有滚轮选择,也会有时钟模式、日历模式等等,可以看到上面是使用了滚轮选择以及时钟模式两种情况,使用 poco 可以识别点击,但要注意 poco 识别不一定适用于所有设备以及应用!

这里用到的设备是:SONY XQ-AS72 搭载 Android10,其中今日头条版本为:V9.1.8 Build

参考的代码如下:

# -*- encoding=utf8 -*-
__author__ = "Airtest"

from airtest.core.api import *
auto_setup(__file__)

from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

#打开时钟
poco("时钟").click()

#点击新增闹钟
poco("com.android.deskclock:id/fab").click()

#直接点击自己需要输入的时间(这里poco可以直接识别即可直接点击)
poco("5").click()
poco("20").click()

#点击保存并退回桌面
poco("android:id/button1").click()

poco("com.android.systemui:id/home_button").click()

sleep(3.0)

#打开今日头条
poco("今日头条").click()

#点击我的
poco(text="我的").click()

#点击修改资料
poco("com.ss.android.article.news:id/dvg").click()

#点击修改生日
poco("com.ss.android.article.news:id/gko").click()

#滑动日期滚轮直接修改
poco("com.ss.android.article.news:id/hs_").swipe([0.0, 0.1126])
poco("com.ss.android.article.news:id/hs7").swipe([-0.0064, 0.1497])
poco("com.ss.android.article.news:id/hs3").swipe([0.0128, 0.136])

# 点击保存
poco("com.ss.android.article.news:id/cu").click()

#退回桌面
poco("com.android.systemui:id/white_cutout").click()

3.在 chrome 上处理时间控件

在 chrome 的 web 端关于时间日期的选择控件种类也很多,但我们解决的方式更简单粗暴了,可以直接通过 JS 的修改控件 Value 的方式去进行修改时间。

注意: 可以先通过浏览器开发者工具或者 selenium 窗口识别确认该时间控件的 type 以及时间是否为可直接修改的值


参考代码如下:

# -*- encoding=utf8 -*-

from airtest.core.api import *

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from airtest_selenium.proxy import WebChrome
from selenium.webdriver.common.by import By

driver = WebChrome()
driver.implicitly_wait(20)

# 打开网页
driver.get("https://v4.mui.com/zh/components/pickers/")

# 等待一段时间,确保页面元素加载完成
sleep(3.0)

# 定位日期时间控件并输入时间
driver.execute_script("window.scrollTo(0, 1500);")
sleep(3.0)

# 执行JavaScript来修改datetime-local控件的value属性
new_value = "2024-04-01T12:00"

driver.execute_script("document.querySelector('input[type=datetime-local]').value = '{}'".format(new_value))

# 等待一段时间,以便观察效果
sleep(3.0)

4.小结

本周推文介绍了在 Android 设备以及 Chrome web 端遇到时间控件如何处理的问题,其中不同系统处理方式不同。

1、Android 设备可以选择通过 Poco 识别的方式进行处理

2、Chrome 端可以通过直接修改控件 Value 的方式进行处理

但以上两种情况都需要注意的是,不同的设备以及不同的场景下,控件都会有不同的情况,poco 以及 js 方式可能需要根据需求去更改方式。同时,我们也非常欢迎同学们能够提供更多修改其他控件的代码,我们会积极分享相关的使用技巧。让我们一起努力,共同进步~


AirtestIDE 下载:airtest.netease.com/\
Airtest 教程官网:airtest.doc.io.netease.com/\
搭建企业私有云服务:airlab.163.com/b2b

官方答疑 Q 群:526033840

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册