此文章來源於專案官方公眾號:“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