1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259
| # Selenium元素定位 find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_element_by_partial_link_text find_element_by_tag_name find_element_by_class_name find_element_by_css_selector
# appium元素定位 # find_element_by_ios_uiautomation() # find_element_by_android_uiautomator("xx")
driver.find_element_by_id("id") # id定位 driver.find_element_by_name("name") # name定位 driver.find_element_by_link_text("text") # 链接名定位 driver.find_element_by_partial_link_text("text") # 通过元素部分可见链接文本定位 driver.find_element_by_tag_name("name") # 通过查找html的标签名称定位元素 driver.find_element_by_xpath("xpath") # 路径定位 driver.find_element_by_class_name("android.widget.LinearLayout") # 类名定位 driver.find_element_by_css_selector("css") # css选择器定位
# 1.appium获取content-desc文本值用element.get_attribute('name'); # 2.appium获取text属性的文本值用element.text或者element.get_attribute('text'); # 3.appium中属性值对应的定位方式: # text->find_element_by_name # resource_id->find_element_by_id # class->find_element_by_class_name # content-desc->find_element_by_accessibility_id
global driver # 元素定位 driver.find_element_by_id("id") # id定位 driver.find_element_by_name("name") # name定位 driver.find_element_by_link_text("text") # 链接名定位 driver.find_element_by_partial_link_text("text") # 通过元素部分可见链接文本定位 driver.find_element_by_tag_name("name") # 通过查找html的标签名称定位元素 driver.find_element_by_xpath("xpath") # 路径定位 driver.find_element_by_class_name("android.widget.LinearLayout") # 类名定位 driver.find_element_by_css_selector("css") # css选择器定位
# 元素集合复数定位 driver.find_elements_by_id("id") # id元素集合 driver.find_elements_by_name("name") # name元素集合 driver.find_elements_by_link_text("text") # 链接名元素集合 driver.find_elements_by_partial_link_text("text") # 部分元素可见链接集合 driver.find_elements_by_tag_name("name") # html标签名集合 driver.find_elements_by_xpath("xpath") # 路径定位集合 driver.find_elements_by_class_name("android.widget.LinearLayout") # 类名定位集合 driver.find_elements_by_css_selector("css") # css选择器定位集合
# 输入框输入 driver.element.send_keys("中英")
# 锁定屏幕 driver.lock(5)
# 把当前应用置于后台 driver.background_app(5)
# 收起键盘 driver.hide_keyboard()
# 打开一个应用或者activity,仅安卓端 driver.start_activity('com.example.android.apis', '.Foo')
# 打开下拉通知栏 仅Android driver.open_notifications()
# 拖动元素,将元素origin_el拖到目标元素destination_el driver.drag_and_drop(self, origin_el, destination_el):
# 检查app是否已安装 driver.is_app_installed('com.example.android.apis')
# 安装应用到设备 driver.install_app('path/to/my.apk')
# 删除应用 driver.remove_app('com.example.android.apis')
# 模拟设备摇晃 driver.shake()
# 关闭应用 driver.close_app()
# 启动 (Launch) # 根据服务关键字 (desired capabilities) 启动会话 (session) 。请注意这必须在设定 autoLaunch=false 关键字时才能生效。 # 这不是用于启动指定的 app/activities ————你可以使用 start_activity 做到这个效果———— # 这是用来继续进行使用了 autoLaunch=false 关键字时的初始化 (Launch) 流程的。 driver.launch_app()
# 应用重置,相当于重新卸载安装 driver.reset()
# 可用上下文 (context) 列出所有的可用上下文 # 翻译备注:context可以理解为 可进入的窗口 。例如,对于原生应用,可用的context和默认context均为NATIVE_APP。 # 详情可查看对混合应用进行自动化测试 driver.contexts
# 列出当前上下文 driver.current_context
# 切换到默认的上下文 (context) # 将上下文切换到默认上下文 driver.switch_to.context(None)
# 获取应用的字符串 driver.app_strings
# 按键事件 (Key Event)给设备发送一个按键事件 driver.keyevent(176)
# 获取当前的activity driver.current_activity
# 触摸动作(TouchAction) / 多点触摸动作(MultiTouchAction) action = TouchAction(driver) action.press(element=el, x=10, y=10).release().perform()
# 滑动(Swipe)模拟用户滑动 # 注意:appium滑动规则是x从左到右变大,y从上到下变大 driver.swipe(start=75, starty=500, endx=75, endy=0, duration=800)
# 捏 (Pinch)捏屏幕 (双指往内移动来缩小屏幕) driver.pinch(element=el)
# 放大 (Zoom)放大屏幕 (双指往外移动来放大屏幕) driver.zoom(element=el)
# 滑动到某个元素 (Scroll To) todo: python
# 从设备中拉出文件 (Pull File) driver.pull_file('Library/AddressBook/AddressBook.sqlitedb')
# 推送文件到设备中去 data = "some data for the file" path = "/data/local/tmp/file.txt" driver.push_file(path, data.encode('base64'))
# 断言 Assert.assertEquals("I am a div", div.getText()); //跳转到指定页面并在该页面所以用元素id进行交互
# 检查文本是否符合预期 assertEqual('I am a div', div.text)
# 输入法是否有活动 返回真假 is_ime_active(self):
# 返回当前安卓设备可用的输入法 driver.available_ime_engines(self):
# 激活安卓设备中的制定输入法 driver.activate_ime_engine(self, engine):
# 关闭当前的输入法(android) driver.deactivate_ime_engine(self):
# 打开安卓设备上的位置定位设置 driver.toggle_location_services()
# 设置设备的经纬度 :Args: - latitude纬度 - String or numeric value between -90.0 and 90.00 - longitude经度 - String or numeric value between -180.0 and 180.0 - altitude海拔高度- String or numeric value 用法 driver.set_location(纬度,经度,高度)
# 点击 element.click()
# 清除元素内容 element.clear()
# 返回元素的文本内容 element.text()
# 提交表单 element.submit(self):
# 元素是否可用 element.is_enabled()
# 元素是否可选 element.is_slected()
# 元素是否可见 element.is_displayed()
# 获取元素的大小(高和宽) new_size["height"] = size["height"] new_size["width"] = size["width"] driver.element.size
# 获取元素左上角的坐标 # 用法 driver.element.location '''返回element的x坐标, int类型''' driver.element.location.get('x') '''返回element的y坐标, int类型''' driver.element.location.get('y')
# 获取当前元素的截图为Base64编码的字符串 img_b64 = element.screenshot_as_base64
# 执行JS # 在当前窗口/框架(特指 Html 的 iframe )同步执行 javascript 代码 driver.execute_script('document.title') # 异步执行代码,其他代码在执行 driver.execute_async_script('document.title')
# 获取当前url driver.current_url
# 获取页面源 driver.page_source
# 关闭当前窗口 driver.close()
# 关闭应用 driver.quit()
# chrome上进行测试 { 'platformName': 'Android', 'platformVersion': '4.4', 'deviceName': 'Android Emulator', 'browserName': 'Chrome' }
# 真机测试 { 'automationName': 'Selendroid', 'platformName': 'Android', 'platformVersion': '2.3', 'deviceName': 'Android Emulator', 'app': myApp, 'appPackage': 'com.mycompany.package', 'appActivity': '.MainActivity' }
# 多点触控 """ 规范中的可用事件有: * 短按 (press) * 释放 (release) * 移动到 (moveTo) * 点击 (tap) * 等待 (wait) * 长按 (longPress) * 取消 (cancel) * 执行 (perform) """
|