遇到時間控件怎麼辦?不要慌,教你輕鬆拿下

此文章來源於項目官方公衆號:“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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章