提交 c7ff721f 编写于 作者: Tommy.IT's avatar Tommy.IT

appiumUI自动化

上级
"""
PO基类
"""
from selenium.webdriver.support.wait import WebDriverWait
class BasePage(object):
def __init__(self, driver):
self.driver = driver
def find_element_func(self, locations, timeout=5, poll_time=.5):
"""
公用元素定位方法
:param locations:传元素对象
:param timeout:传超时时间,默认5秒
:param poll_time:传轮询时间,默认0.5秒
:return:elements
"""
# *locations拆包方法
# 显示等待
# timeout 传超时时间,默认5, poll_frequency 传轮询时间,默认0.5秒
elements = WebDriverWait(self.driver, timeout=timeout, poll_frequency=poll_time) \
.until(lambda x: x.find_element(*locations))
return elements
def click_func(self, elements):
"""
公用的点击事件
:param elements:传元素对象,可以调用基类find_element_func方法
:return:无
"""
elements.click()
def input_func(self, elements, text):
"""
公用的输入方法
:param elements:传元素对象
:param text:传字符串
:return:无
"""
# 清空,再输入
elements.clera()
elements.send_keys(text)
def get_text_func(self, elements):
"""
公用获取文本信息
:param elements:
:return: elements
"""
elements = elements.text
return elements
import time
import pytest
from pages.open_page import OpenPage
from pages.page_factory import PageFactory
from utils import init_driver
class TestSetting(object):
@pytest.fixture(autouse=True)
def driver_func(self):
# 实例化对象
self.driver = init_driver()
# 将【某个页面的】driver实例化以后可以多次使用
# self.open_page = OpenPage(self.driver)
# 引入工厂模式获取对象
self.page_factory = PageFactory(self.driver)
yield
# 等待3秒
time.sleep(5)
# 退出驱动对象
self.driver.quit()
def test_open(self):
# self.page_factory.click_cancel()
self.page_factory.open_page_factory().click_workspace()
self.page_factory.open_page_factory().click_checkin()
self.page_factory.open_page_factory().click_login()
from selenium.webdriver.common.by import By
"""
点击进入考勤打开页面
"""
"""
提取所有元素,且属于一个元组tuple
"""
# 取消更新按钮元素
cancelEle = By.XPATH, "//*[contains(@text,'取消')]"
# 点击工作台按钮元素
workspaceEle = By.XPATH, "//*[@resource-id='com.weaver.emobile7:id/address_image']"
# 点击考勤按钮元素
checkin = By.XPATH, "//*[@resource-id='entrance-page']/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[11]/android.view.View/android.widget.Image"
# 打卡按钮元素
loginEle = By.XPATH, "//*[contains(@text,'打卡')]"
"""
打开界面
"""
from selenium.webdriver.common.by import By
import pages
from base.base_page import BasePage
class OpenPage(BasePage):
"""
点击进入考勤打开页面
"""
"""
提取所有元素,且属于一个元组tuple
"""
# # 取消更新按钮元素
# cancelEle = By.XPATH, "//*[contains(@text,'取消')]"
# # 点击工作台按钮元素
# workspaceEle = By.XPATH, "//*[@resource-id='com.weaver.emobile7:id/address_image']"
# # 点击考勤按钮元素
# checkin = By.XPATH,"//*[@resource-id='entrance-page']/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[11]/android.view.View/android.widget.Image"
# # 打卡按钮元素
# loginEle = By.XPATH, "//*[(@text,'打卡')]"
""" 获取传过来的driver"""
# BasePage已使用,注释即可
# def __init__(self,driver):
# self.driver = driver
def click_cancel(self):
"""
点击取消更新
:return:
"""
# self.driver.find_element_by_xpath("//*[contains(@text,'取消')]").click()
# self.driver.find_element(self.cancelEle[0],self.cancelEle[1]).click()
# self.click_func(self.find_element_func(self.cancelEle))
# 导入impor pages ,元素都抽取到__init__.py文件
self.click_func(self.find_element_func(pages.cancelEle))
def click_workspace(self):
"""
点击工作台
:return:
"""
# self.driver.find_element(self.workspaceEle[0],self.workspaceEle[1]).click()
self.click_func(self.find_element_func(pages.workspaceEle))
def click_checkin(self):
"""
点击考勤
:return:
"""
# self.driver.find_element(self.loginEle[0],self.loginEle[1]).click()
self.click_func(self.find_element_func(pages.checkin))
def click_login(self):
"""
点击打卡
:return:
"""
self.click_func(self.find_element_func(pages.loginEle))
# self.get_text_func(self.find_element_func(pages.loginEle))
"""页面工厂方法"""
# 封装所有实例方法
from pages.open_page import OpenPage
class PageFactory(object):
def __init__(self, driver):
self.driver = driver
def open_page_factory(self):
"""
打卡页面
:return:打卡页面对象OpenPage
"""
return OpenPage(self.driver)
[pytest]
addopts = -s
testpaths = ./case
python_files = test_*.py
python_classes = Test*
python_functions = test_*
\ No newline at end of file
from appium import webdriver
def init_driver():
"""初始化获取驱动对象"""
capabilities = {
"platformName": "Android",
"platformVersion": "10.0.0",
"deviceName": "你的设备名称",
"appPackage": "com.weaver.emobile7",
"appActivity": "weaver.fw.com.WelcomeActivity",
"noReset": True
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_capabilities=capabilities)
return driver
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册