appium/WebDriverAgent Client Library written in Python
Install WebDriverAgent for iOS devices
Start WebDriverAgent(the following two methods are recommended)
Use Tidevice to start WDA without xcodebuild in Windows / MacOS / Linux
Start with Xcode in MacOS
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()# 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()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')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').enableTo develop more apis
To support alert operations
To support Tidevice starting
openatx/facebook-wda: Facebook WebDriverAgent Python Client Library (not official)
openatx/wdapy: Another WebDriverAgent python Client