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()