https://github.com/electricbubble/gwda
WebDriverAgent ( iOS ) Client Library in Golang
https://github.com/electricbubble/gwda
appium-ios appium-webdriveragent facebook-wda golang ios iphone wda webdriveragent
Last synced: about 1 year ago
JSON representation
WebDriverAgent ( iOS ) Client Library in Golang
- Host: GitHub
- URL: https://github.com/electricbubble/gwda
- Owner: electricbubble
- License: mit
- Created: 2019-12-13T08:41:48.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-08-06T11:57:42.000Z (almost 3 years ago)
- Last Synced: 2025-03-30T00:09:53.708Z (about 1 year ago)
- Topics: appium-ios, appium-webdriveragent, facebook-wda, golang, ios, iphone, wda, webdriveragent
- Language: Go
- Homepage:
- Size: 264 KB
- Stars: 310
- Watchers: 11
- Forks: 39
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Golang-WDA
[](https://pkg.go.dev/github.com/electricbubble/gwda?tab=doc#pkg-index)
[](https://goreportcard.com/report/github.com/electricbubble/gwda)
[](https://github.com/electricbubble/gwda/blob/master/LICENSE)
[appium/WebDriverAgent](https://github.com/appium/WebDriverAgent) Client Library in Golang
> `Android` can use [electricbubble/guia2](https://github.com/electricbubble/guia2)
English | [π¨π³δΈζ](README_CN.md)
## Installation
> First, install WebDriverAgent for iOS devices
```shell script
go get github.com/electricbubble/gwda
```
## QuickStart
#### [Connection Device](examples/connect/main.go)
```go
package main
import (
"github.com/electricbubble/gwda"
"log"
)
func main() {
// var urlPrefix = "http://localhost:8100"
// The function may also require 'iproxy 8100 8100' to forward the device port first
// driver, _ := gwda.NewDriver(nil, urlPrefix)
// Connect devices via USB
driver, _ := gwda.NewUSBDriver(nil)
log.Println(driver.IsWdaHealthy())
}
```
#### [Touch](examples/touch/main.go)
```go
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)
// requires hardware support: 3D Touch
// driver.ForceTouch(x, y, 0.8)
}
```
> [AssistiveTouch](examples/touch/main.go) `driver.PerformW3CActions` `driver.PerformAppiumTouchActions`
#### [App Actions](examples/app/main.go)
```go
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)
// Resets the π· camera authorization status of the current application
// driver.AppAuthReset(gwda.ProtectedResourceCamera)
}
```
#### [Keyboard](examples/keyboard/main.go)
```go
package main
import (
"github.com/electricbubble/gwda"
)
func main() {
driver, _ := gwda.NewUSBDriver(nil)
driver.SendKeys("hello")
}
```
> [specified element](examples/keyboard/main.go) `element.SendKeys`
#### [Siri](examples/siri/main.go)
```go
package main
import (
"github.com/electricbubble/gwda"
)
func main() {
driver, _ := gwda.NewUSBDriver(nil)
driver.SiriActivate("What's the weather like today")
}
```
#### [Alert](examples/alert/main.go)
```go
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")
}
```
#### [Device information](examples/info/main.go)
```go
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)
}
```
#### [Hardware button](examples/button/main.go)
```go
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)
}
```
#### [Screenshot](examples/screenshot/main.go)
```go
package main
import (
"github.com/electricbubble/gwda"
"image"
)
func main() {
driver, _ := gwda.NewUSBDriver(nil)
screenshot, _ := driver.Screenshot()
img, format, _ := image.Decode(screenshot)
_, _ = img, format
}
```
#### [Debug](examples/debug/main.go)
```go
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)
}
```
## Extensions
| |About|
|---|---|
|[electricbubble/gwda-ext-opencv](https://github.com/electricbubble/gwda-ext-opencv)|Operate with pictures|
## Alternatives
| |About|
|---|---|
|[openatx/facebook-wda](https://github.com/openatx/facebook-wda)|Facebook WebDriverAgent Python Client Library (not official)|
## Thanks
Thank you [JetBrains](https://www.jetbrains.com/?from=gwda) for providing free open source licenses