从0到1完成appium+pytest+allure框架-元素定位及对元素的操作的封装

之前说了元素定位方法的封装,这里说一下元素定位的封装,我是把元素定位和对元素的操作是分开了。

from practice.Find_Element.Get_Element import GetElement


class UserLoginElement(GetElement):

# 获取服务协议定位
def get_service_agreement(self):
return self.get_element('id', '')

# 获取"我的"按钮
def get_personal_center(self):
return self.driver.find_element_by_android_uiautomator('new UiSelector().text("我的")')

# 获取手机号输入框
def get_input_mobile(self):
return self.get_element('id', '')

# 获取密码输入框
def get_input_password(self):
return self.get_element('id', '')

# 获取隐私协议
def get_privacy_agreement(self):
return self.get_element('id', '')

# 获取登录按钮
def get_login_value(self):
return self.driver.find_element_by_android_uiautomator('new UiSelector().text("进入")')

因为是公司的项目所以我就把元素信息去掉了,将就看吧
我这里就是用到了之前封装好的元素定位方法,看起来代码精简了不少
这里一定要记得return,因为我只是获取元素,获取到之后还要操作,所以必须拿到它
拿到之后就是对元素的操作
import yaml
from practice.Find_Element.Login_Element import UserLoginElement
from selenium.webdriver.common.by import By



class Login(UserLoginElement):
# 登录
def get_login(self):
with open('../desired_caps.yaml', 'r', encoding='utf-8') as f:
dl = yaml.load(f, Loader=yaml.FullLoader)
mobile = dl['mobile']
password = dl['password']
# 判断是否登录,
try:
self.get_personal_center().click()
self.driver.find_element(By.XPATH, '').click()
self.driver.find_element(By.ID, '').click()
self.driver.find_element(By.ID, '').click()
except Exception as e:
print('未登录,执行登录用例')
self.get_service_agreement().click()
self.get_personal_center().click()
self.get_input_mobile().send_keys(mobile)
self.get_input_password().send_keys(password)
self.get_privacy_agreement().click()
self.get_login_value().click()

因为我的参数里设置了noReset=True,所以我这里判断了是否处于登录状态,如果登录了就先退出登录,如果没登录就直接登录

因为对元素定位进行了封装,所以我这里就可以直接去调那里已经定位好的元素进行操作,当然send_keys(),click()等操作也是可以封装的,只不过我没有做,有兴趣的可以试一试。

还有一点就是,一定要单继承,千万不要继承多个类,可能会有冲突,而且我之前的元素定位方法继承了DesiredCaps所以我这里继承元素定位的时候也是有DesiredCaps的特性的,是可以直接使用driver的。

写到这里其实我们的整个登录流程就已经完成了,接下来就是需要加入pytest,写成用例了,为啥不直接在这里写成case呢,因为我们继承了DesiredCaps的特性,而里面是有init方法的,但是pytest是不允许有init方法的,所以我们还需要再写成case。

posted @ 2022-01-09 23:48  Rookie_C  阅读(407)  评论(0编辑  收藏  举报