Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

3 Commits

Repository files navigation

pywda

appium/WebDriverAgent Client Library written in Python

Installation

  1. Install WebDriverAgent for iOS devices

  2. Start WebDriverAgent(the following two methods are recommended)

    • Use Tidevice to start WDA without xcodebuild in Windows / MacOS / Linux

    • Start with Xcode in MacOS

Capabilities

Create client

frompywdaimportdriverdesired_caps= {
"udid": "",
"deviceName": "",
"wdaBundleId": "",
"appBundleId": ""
}
# desired_caps and agent url are not necessarydriver=driver.remote("http://localhost:8100", desired_caps)
# also create client in default port 8100driver=driver.remote()

Client Operations

# show statusprint(driver.status())
# get session idprint(driver.session())
# save screenshot as pngdriver.screenshot("test.png")
# get screenshot base64 dataprint(driver.screenshot(raw))
# do healthcheckdriver.healthcheck()
# back to home pagedriver.home()
# lock / unlock device operationsdriver.lock()
driver.unlock()
print(driver.get_lock_state())
# device orientation operationsprint(driver.orientation)
driver.orientation="PORTRAIT"# tap device screen(only support percentage for compatibility)driver.tap(x=0.5, y=0.5)
driver.tap_hold(x=0.5, y=0.5, duration=2)
# swipe device screen(only support percentage for compatibility)driver.swipe(x=0.5, y=0.5)
# recommend swipe method(duration in ms)driver.flick(x=0.5, y=0.5, duration=1000)
# get window sizeprint(driver.window_size())
# get page elements tree(xml or json format)print(driver.get_page_source())
print(driver.get_page_accessible_source())
# hide keyboarddriver.hide_keyboard()
# app operationsdriver.close_app()
driver.launch_app()
print(driver.get_current_app_info())
print(driver.get_app_state())
# close clientdriver.quit()

Get element or elements

driver.find_element_by_name()
driver.find_element_by_id()
driver.find_element_by_accessibility_id()
driver.find_element_by_xpath()
driver.find_element_by_text()
driver.find_element_by_label()
driver.find_element_by_value()
driver.find_element_by_class_name()
driver.find_elements_by_name()
driver.find_elements_by_id()
driver.find_elements_by_accessibility_id()
driver.find_elements_by_xpath()
driver.find_elements_by_text()
driver.find_elements_by_label()
driver.find_elements_by_value()
driver.find_elements_by_class_name()
# Also can import By to usefrompywda.driverimportBydriver.find_element(By.NAME, 'Test')
driver.find_elements(By.NAME, 'Test')

Element operations

driver.find_elements_by_name('Test').click()
driver.find_elements_by_name('Test').send_keys('sometext')
rect=driver.find_elements_by_name('Test').rectenable=driver.find_elements_by_name('Test').enable

TODO

  1. To develop more apis

  2. To support alert operations

  3. To support Tidevice starting


Thanks

openatx/facebook-wda: Facebook WebDriverAgent Python Client Library (not official)

openatx/wdapy: Another WebDriverAgent python Client

About

WebDriverAgent Client Library written in Python

Topics

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages