初探自动化测试框架(python)第十章——appnium元素定位与封装
程序员文章站
2022-03-22 13:11:50
...
获取元素
- 打开 uiautomatorviewer.bat
-
该工具与appium端口号冲突,如果报错,需停止appium
定位元素
通用方法
- find_element_by_android_uiautomator(‘new UiSelector().函数名称(“定位表达式”)’)
find_element_by_android_uiautomator(‘new UiSelector().text(“文本内容”)’)
二次封装
class APPBase():
def __init__(self,deviceName,appPackage,appActivity):
self.deviceName = deviceName
self.appPackage = appPackage
self.appActivity = appActivity
self.driver = self.get_driver()
def get_driver(self):
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '9.1'
desired_caps['deviceName'] = self.deviceName
desired_caps['appPackage'] = self.appPackage
desired_caps['appActivity'] = self.appActivity
self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
return self.driver
def element(self, type, value, timeout=10):
"""定位元素"""
try:
if type == 'xpath':
element = WebDriverWait(
self.driver, timeout, 1).until(
EC.presence_of_element_located(
(By.XPATH, value)))
return element
elif type == 'id':
element = WebDriverWait(
self.driver, timeout, 1).until(
EC.presence_of_element_located(
(By.ID, value)))
return element
elif type == 'name':
element = WebDriverWait(
self.driver, timeout, 1).until(
EC.presence_of_element_located(
(By.NAME, value)))
return element
elif type == 'class':
element = WebDriverWait(
self.driver, timeout, 1).until(
EC.presence_of_element_located(
(By.CLASS_NAME, value)))
return element
elif type == 'link':
element = WebDriverWait(
self.driver, timeout, 1).until(
EC.presence_of_element_located(
(By.LINK_TEXT, value)))
return element
elif type == 'css':
element = WebDriverWait(
self.driver, timeout, 1).until(
EC.presence_of_element_located(
(By.CSS_SELECTOR, value)))
return element
except BaseException:
print("%s 页面未找到元素 %s" % (self, value))
def click(self, type, value):
"""单击"""
element = self.element(type, value)
element.click()
def click_perform(self, value1, value2):
element1 = self.driver.find_element_by_css_selector(
value1).find_element_by_css_selector(value2)
element1.click()
def input(self, type, value, text):
"""清除输入框内容并发送文本"""
element = self.element(type, value)
# element.clear()
element.send_keys(text)
def input_perform(self, value1, value2, inputvalue):
element1 = self.driver.find_element_by_css_selector(
value1).find_element_by_css_selector(value2)
element1.input(inputvalue)
def lock(self,time=5):
"""锁定屏幕时间"""
self.driver.lock(time)
def background(self,time=5):
"""将APP放置后台"""
self.driver.background_app(time)
def hide_keyboard(self):
"""收起键盘"""
self.driver.hide_keyboard()
def activity(self,pagename,activityname):
"""启动Activity"""
self.driver.start_activity(pagename, activityname)
def open_notifications(self):
"""打开通知栏"""
self.driver.open_notifications()
def is_installed(self,pagename):
"""检查应用是否已经安装 参数包名"""
self.driver.is_app_installed(pagename)
def parameter_app(self,path):
"""安装应用 参数 路径"""
self.driver.install_app(path)
def remove_app(self, pagename):
"""删除"""
self.driver.remove_app(pagename)
def shake(self):
"""检查应用是否已经安装 参数包名"""
self.driver.shake()
def close_app(self):
"""关闭应用"""
self.driver.close_app()
def reset(self):
"""重置(等于卸载后重装)"""
self.driver.reset()
# def get_text(self):
# """获得字符串"""
# return self.driver.app_strings
def current_activity(self):
"""获取当前Activity"""
return self.driver.current_activity
上一篇: Eclipse+Selenium+TestNG配置和错误排查
下一篇: 洛谷P3919可持久化线段树