mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-11 18:11:21 +08:00
feat: add bilibili ios script
This commit is contained in:
18
examples/uitest/bili/ios/bili_ios.json
Normal file
18
examples/uitest/bili/ios/bili_ios.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"config": {
|
||||
"name": "run ui test on bili ios",
|
||||
"variables": {
|
||||
"RunTimes": 3,
|
||||
"UDID": "${ENV(UDID)}"
|
||||
}
|
||||
},
|
||||
"teststeps": [
|
||||
{
|
||||
"name": "run bili ios",
|
||||
"shell": {
|
||||
"string": "bili_ios",
|
||||
"expect_exit_code": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
137
examples/uitest/bili/ios/cli.go
Normal file
137
examples/uitest/bili/ios/cli.go
Normal file
@@ -0,0 +1,137 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/httprunner/httprunner/v4/hrp/pkg/uixt"
|
||||
)
|
||||
|
||||
var (
|
||||
serial string
|
||||
runTimes int
|
||||
)
|
||||
|
||||
func init() {
|
||||
serial = os.Getenv("UDID")
|
||||
numStr := os.Getenv("RunTimes")
|
||||
defaultNum := 20
|
||||
|
||||
var err error
|
||||
runTimes, err = strconv.Atoi(numStr)
|
||||
if err != nil {
|
||||
runTimes = defaultNum
|
||||
}
|
||||
fmt.Printf("=== start running cases, serial=%s, runTimes=%d ===\n", serial, runTimes)
|
||||
}
|
||||
|
||||
func launchAppDriver(pkgName string) (driver *uixt.DriverExt, err error) {
|
||||
device, _ := uixt.NewIOSDevice(uixt.WithUDID(serial))
|
||||
driver, err = device.NewDriver()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
//_, err = driver.Driver.AppTerminate(pkgName)
|
||||
//if err != nil {
|
||||
// return nil, err
|
||||
//}
|
||||
//
|
||||
//err = driver.Driver.Homescreen()
|
||||
//if err != nil {
|
||||
// return nil, err
|
||||
//}
|
||||
//
|
||||
//err = driver.Driver.AppLaunch(pkgName)
|
||||
//if err != nil {
|
||||
// return nil, err
|
||||
//}
|
||||
|
||||
time.Sleep(15 * time.Second)
|
||||
|
||||
// 处理弹窗
|
||||
err = driver.ClosePopupsHandler()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 进入推荐页
|
||||
err = driver.TapByOCR("推荐", uixt.WithScope(0, 0, 1, 0.3))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return driver, nil
|
||||
}
|
||||
|
||||
func watchVideo(driver *uixt.DriverExt) (err error) {
|
||||
time.Sleep(3 * time.Second)
|
||||
err = driver.SwipeRelative(0.7, 0.7, 0.7, 0.2)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
time.Sleep(1 * time.Second)
|
||||
|
||||
// 点击进入某视频
|
||||
err = driver.TapXY(0.3, 0.5)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
time.Sleep(5 * time.Second)
|
||||
|
||||
// 点击播放区域,展现横屏图标
|
||||
err = driver.TapXY(0.5, 0.1)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
// 切换横屏
|
||||
err = driver.TapByUIDetection(
|
||||
uixt.WithScreenShotUITypes("fullScreen"))
|
||||
if err != nil {
|
||||
// 未找到横屏图标,该页面可能不是横版视频(直播|广告|Feed)
|
||||
// 退出回到推荐页
|
||||
driver.Driver.PressBack()
|
||||
return nil
|
||||
}
|
||||
|
||||
// 观播 10s
|
||||
time.Sleep(10 * time.Second)
|
||||
|
||||
// 返回视频页面
|
||||
err = driver.Driver.PressBack()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
time.Sleep(1 * time.Second)
|
||||
|
||||
// 返回推荐页
|
||||
err = driver.Driver.PressBack()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// build shell command
|
||||
// go build -o bili_android examples/uitest/bilibili/cli.go
|
||||
func main() {
|
||||
driver, err := launchAppDriver("tv.danmaku.bilianime")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// 重复采集 XX 次
|
||||
for i := 0; i < runTimes; i++ {
|
||||
err = watchVideo(driver)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user