使用 Golang 实现 appium/WebDriverAgent 的客户端库
参考 facebook-wda (python): 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
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
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)
location, err := driver.Location()
if err != nil {
log.Fatalln(err)
}
log.Println(location)
// 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)
}
Thank you JetBrains for providing free open source licenses