Golang 控制 iOS 裝置實現自動化操作
由於 Appium 的內容過於豐富。。我又不太想安裝那麼多我用不到的部分。。
而且 Appium 提供的 客戶端庫 並沒有 Golang 的實現版本。
於是我寫了使用 Golang 實現 appium/WebDriverAgent 的客戶端庫。
這些天重構了部分,相對來說使用會更接近 tebeka/selenium
靈感來自 Python 版的 facebook-wda : https://github.com/openatx/facebook-wda
擴充套件庫
- electricbubble/gwda-ext-opencv 直接通過指定圖片進行操作
如果使用
Android
裝置, 可檢視 electricbubble/guia2
安裝
必須先安裝好
WDA
,安裝步驟可參考 ATX 文件 - iOS 真機如何安裝 WebDriverAgent 或者 WebDriverAgent 安裝
go get github.com/electricbubble/gwda
連線裝置
package main
import (
"github.com/electricbubble/gwda"
"log"
)
func main() {
// var urlPrefix = "http://localhost:8100"
// 該函式或許還需要 `iproxy 8100 8100` 先進行裝置埠轉發
// driver, _ := gwda.NewDriver(nil, urlPrefix)
// 通過 USB 直連裝置
driver, _ := gwda.NewUSBDriver(nil)
log.Println(driver.IsWdaHealthy())
}
手勢操作
package main
import (
"github.com/electricbubble/gwda"
)
func main() {
driver, _ := gwda.NewUSBDriver(nil)
x, y := 50, 256
driver.Tap(x, y)
driver.DoubleTap(x, y)
driver.TouchAndHold(x, y)
fromX, fromY, toX, toY := 50, 256, 100, 256
driver.Drag(fromX, fromY, toX, toY)
driver.Swipe(fromX, fromY, toX, toY)
// 需要 3D Touch 硬體支援
// driver.ForceTouch(x, y, 0.8)
}
自定義手勢
driver.PerformW3CActions
driver.PerformAppiumTouchActions
App 操作
package main
import (
"github.com/electricbubble/gwda"
)
func main() {
driver, _ := gwda.NewUSBDriver(nil)
var bundleId = "com.apple.Preferences"
driver.AppLaunchUnattached(bundleId)
driver.AppDeactivate(2)
driver.AppTerminate(bundleId)
driver.AppActivate(bundleId)
// 重置當前 App 的 相機? 許可權
// driver.AppAuthReset(gwda.ProtectedResourceCamera)
}
鍵盤輸入
package main
import (
"github.com/electricbubble/gwda"
)
func main() {
driver, _ := gwda.NewUSBDriver(nil)
driver.SendKeys("hello")
}
指定元素的輸入
element.SendKeys
Siri 操作
package main
import (
"github.com/electricbubble/gwda"
)
func main() {
driver, _ := gwda.NewUSBDriver(nil)
driver.SiriActivate("What's the weather like today")
}
彈窗操作
package main
import (
"github.com/electricbubble/gwda"
"log"
)
func main() {
driver, _ := gwda.NewUSBDriver(nil)
text, _ := driver.AlertText()
log.Println(text)
alertButtons, _ := driver.AlertButtons()
log.Println(alertButtons)
driver.AlertAccept()
// driver.AlertDismiss()
// driver.SendKeys("ah")
}
基本裝置資訊
package main
import (
"github.com/electricbubble/gwda"
"log"
)
func main() {
driver, _ := gwda.NewUSBDriver(nil)
deviceInfo, _ := driver.DeviceInfo()
log.Println(deviceInfo.Name)
batteryInfo, _ := driver.BatteryInfo()
log.Println(batteryInfo.State)
windowSize, _ := driver.WindowSize()
log.Println(windowSize)
// screen, _ := driver.Screen()
// log.Println(screen)
}
按鍵操作
package main
import (
"github.com/electricbubble/gwda"
)
func main() {
driver, _ := gwda.NewUSBDriver(nil)
// driver.Homescreen()
driver.PressButton(gwda.DeviceButtonHome)
driver.PressButton(gwda.DeviceButtonVolumeUp)
driver.PressButton(gwda.DeviceButtonVolumeDown)
}
截圖
package main
import (
"github.com/electricbubble/gwda"
"image"
)
func main() {
driver, _ := gwda.NewUSBDriver(nil)
screenshot, _ := driver.Screenshot()
img, format, _ := image.Decode(screenshot)
_, _ = img, format
}
除錯函式
package main
import (
"fmt"
"github.com/electricbubble/gwda"
)
func main() {
driver, _ := gwda.NewUSBDriver(nil)
source, _ := driver.Source()
fmt.Println(source)
// fmt.Println(driver.AccessibleSource())
// gwda.SetDebug(true)
}
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- Ios+appium自動化多裝置執行實現iOSAPP
- 米家智慧裝置自動化控制
- 帶你用 Python 實現自動化群控裝置Python
- iOS如何實現自動化打包iOS
- iOS--利用Fastlane實現自動化打包iOSAST
- 多個 iOS 裝置同時進行 UI 自動化測試iOSUI
- 模擬手機裝置:使用 Playwright 實現移動端自動化測試
- telnetlib中興裝置自動化
- js控制ios裝置在微信開啟網頁時,自動播放音樂JSiOS網頁
- iOS 元件化開發(四):fastlane實現pod自動化iOS元件化AST
- 利用Python實現微信半自動化操作!Python
- Airtest結合tidevice實現IOS自動化測試AIIDEdeviOS
- PXE實現系統自動化安裝
- 自動化裝置測試與自動化測試的區別
- Python自動化 | 利用python-docx 實現word操作Python
- 使用Robot機器人框架實現自動化操作機器人框架
- 智慧裝置端與 APP 之間如何實現自動化測試 (藍芽 4.0)APP藍芽
- iOS 12 workflow 配合 AppleScript 實現 Mac 自動初始化iOSAPPMac
- 搬運:python基於pywinauto實現PC端自動化 python操作微信自動化Python
- Selenium自動化實現web自動化-1Web
- iOS超級籤系統用裝置udid自動安裝方式流程iOS
- Appium+Python實現iOS自動化測試~環境搭建APPPythoniOS
- PLC雲閘道器助力非標自動化裝置實現遠端除錯運維除錯運維
- 虛擬化中裝置直通的實現
- selenium自動化操作
- 如何透過前端表格控制元件實現自動化報表?前端控制元件
- 移動裝置的自動化測試工具,如何選型?
- IT 自動化:如何去實現
- linux mdev實現裝置符重對映/裝置符手動新增Linuxdev
- 介面自動化之實現日誌記錄封裝封裝
- golang呼叫模組程式實現互動輸入自動化,獲取imei及iccidGolang
- iOS 裝置驅動 for windows 32&64iOSWindows
- 案例分享:Qt國產麒麟系統某防“某顯示控制專案”(多類裝置自動化流程控制....QT
- 實現一鍵式自動化操作(快速建立 Python 與 Shell 檔案)Python
- 按鍵大師:用Python實現無人值守的自動化操作Python
- 使用gulp實現前端自動化前端
- 使用 fastlane 實現自動化打包AST
- 如何實現辦公自動化?