【appium】appium中的元素定位和基本操作
1 # coding=utf-8 2 3 from appium import webdriver 4 import time 5 from selenium.webdriver.support.ui import WebDriverWait 6 from selenium.webdriver.support import expected_conditions as EC 7 8 9 10 class Base: 11 12 def __init__(self): 13 self.driver = self.get_driver() 14 self.size = self.get_size() 15 16 def get_driver(self): 17 capabilities = { 18 "platformName": "Android", 19 "automationName": "UiAutomator2", # 测试平台,默认为appium,为了get_tost此处为automator2 20 "deviceName": "127.0.0.1:21513", 21 "app": "E:\\pythonAppium\\autoTest\\apps\\mukewang.apk", 22 "appWaitActivity": "cn.com.open.mooc.user.register.MCPhoneRegisterAty", 23 "noReset": "True", # 是否重装 24 # "chromeOptions": {"androidProcess": "WEBVIEW_cn.com.open.mooc"} 25 26 } 27 driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", capabilities) 28 return driver 29 30 def get_size(self): 31 # 获取屏幕大小 32 size = self.driver.get_window_size() 33 width = size['width'] 34 height = size['height'] 35 return width, height 36 37 def swipe_right(self): 38 """ 39 从左向右滑 40 :return: 41 """ 42 x = self.get_size()[0]/10 43 x1 = self.get_size()[0]/10*9 44 y = self.get_size()[1]/2 45 self.driver.swipe(x, y, x1, y) 46 47 def swipe_left(self): 48 """ 49 从右向左滑 50 :return: 51 """ 52 x = self.get_size()[0]/10*9 53 x1 = self.get_size()[0]/10 54 y = self.get_size()[1]/2 55 self.driver.swipe(x, y, x1, y) 56 57 def swipe_up(self): 58 """ 59 从下往上滑 60 :return: 61 """ 62 x = self.get_size()[0]/2 63 y = self.get_size()[1]/10*9 64 y1 = self.get_size()[1]/10 65 self.driver.swipe(x, y, x, y1) 66 67 def swipe_down(self): 68 """ 69 从上往下滑 70 :return: 71 """ 72 x = self.get_size()[0]/2 73 y = self.get_size()[1]/10 74 y1 = self.get_size()[1]/10*9 75 self.driver.swipe(x, y, x, y1) 76 77 def swipe_on(self, direction): 78 if direction == 'left': 79 self.swipe_left() 80 elif direction == 'right': 81 self.swipe_right() 82 elif direction == 'up': 83 self.swipe_up() 84 else: 85 self.swipe_down() 86 87 def go_to_login(self): 88 """ 89 跳转到登录界面 90 :return: 91 """ 92 self.driver.find_element_by_id('cn.com.open.mooc:id/tv_go_login').click() 93 94 def login_by_id(self): 95 self.driver.find_element_by_id('cn.com.open.mooc:id/account_edit').send_keys('13055211990') 96 # self.drvier.find_element_by_id('cn.com.open.mooc:id/password_edit').send_keys('dianzi1312') 97 self.driver.find_element_by_id('cn.com.open.mooc:id/login').click() 98 99 def login_by_uiautomator(self): 100 self.driver.find_element_by_android_uiautomator('new UiSelector().text("13055211990")').clear() 101 self.driver.find_element_by_android_uiautomator('new UiSelector().text("手机号/邮箱")').sendkeys('13055211990') 102 self.driver.find_element_by_android_uiautomator('new UiSelector().resourceId("cn.com.open.mooc:id/password_edit")').sendkeys('dianzi1312') 103 104 def login_by_xpath(self): 105 # 在所有层级查找text包含忘记的元素 106 # self.drvier.find_element_by_xpath('//*[cotains(@text,"忘记")]').click() 107 # 在class为..中查找text为忘记的元素 108 # self.drvier.find_element_by_xpath('//android.widget.TextView[@text="忘记"]').click() 109 # /../preceding-sibiling::寻找上级节点 110 self.driver.find_element_by_xpath('//android.widget.TextView@resource-id="cn.com.open.mooc:id/login_lable"]/../preceding-sibiling::*[@index="1]') 111 112 def get_webview(self): 113 time.sleep(20) 114 webviews = self.driver.contexts 115 print(webviews) 116 for view in webviews: 117 if 'WEBVIEW_cn.com.open.mooc' in view: 118 print("1") 119 self.driver.switch_to.context(view) 120 print("2") 121 break 122 self.driver.find_element_by_link_text('JAVA').click() 123 124 def get_tost(self): 125 time.sleep(2) 126 tost_locator = ("xpath", "//*[contains(@text,'请输入密码')]") 127 result = WebDriverWait(self.driver, 10, 0.1).until(EC.presence_of_element_located(tost_locator)) 128 print(result) 129 130 131 if __name__ == '__main__': 132 run = Base() 133 time.sleep(5) 134 # run.login_by_uiautomator() 135 run.go_to_login() 136 time.sleep(2) 137 run.login_by_id() 138 run.get_tost()