class ClickPersonal(object): def __init__(self, driver): self.driver = driver self.base = BaseApi(driver) self.indexHolder = IndexHolder(driver) self.readYaml = ReadYaml() self.userInfoPage = self.readYaml.getStream(FilePath.iOSUserInfolPage) self.personalButtons = self.readYaml.getNode(self.userInfoPage, "personalButtons") def clickPersonal(self, db, mobile): """ 进入修改个人资料页面 :param db: :param mobile: :return: """ self.indexHolder.switchNavigation("我的") userName = db.select( "select nickname from user where studentId= {0}".format( mobile))[0][0] self.personalButtons = self.personalButtons.format(userName) if self.base.iosCheckElements(self.personalButtons): button = self.base.iosPredicate(self.personalButtons) button.click() #进入个人资料设置页面
def __init__(self, driver): self.readYaml = ReadYaml() self.base = BaseApi(driver) #校园页面 self.schoolNavigationBar = self.readYaml.getStream( FilePath.androidIndexPage) self.schoolclass = self.readYaml.getNode(self.schoolNavigationBar, 'class') #获取通讯录元素路径 self.imGroup = self.readYaml.getStream(FilePath.androidGroup) #通讯录页面 self.addressList = self.readYaml.getNode(self.imGroup, 'addressList') #添加好友页面 self.addFriend = self.readYaml.getNode(self.imGroup, 'addFriend') #添加好友输入框 self.addFriendScanf = self.readYaml.getNode(self.imGroup, 'addFriendScanf') #添加好友按钮 self.addFriendButton = self.readYaml.getNode(self.imGroup, 'addFriendButton') #添加好友验证按钮 self.sendFriendButton = self.readYaml.getNode(self.imGroup, 'sendFriendButton')
def __init__(self, driver): self.driver = driver self.logger = MyLogger(self.__class__.__name__).getlogger() # 获取日志 self.baseView = BaseApi(self.driver) self.launchPath = FilePath().androidLaunchPage self.readYaml = ReadYaml() self.myself = MySelf(driver) self.launchPage = self.readYaml.getStream(self.launchPath) self.launchEle = self.launchPage.get("launch", False) self.checkLoginEle = self.launchPage.get("ckeckLogin", False) # 登录成功校验元素 self.mobileLoginButton = self.readYaml.getNode(self.launchEle, "mobileLoginButton") self.aaccount = self.readYaml.getNode(self.launchEle, "aaccount") self.passwd = self.readYaml.getNode(self.launchEle, "passwd") self.submitButton = self.readYaml.getNode(self.launchEle, "submitButton") self.forgetPasswd = self.readYaml.getNode(self.launchEle, "forgetPasswd") self.androidUserInfoPage = self.readYaml.getStream( FilePath.androidUserInfoPage) self.settingPage = self.readYaml.getStream(FilePath.androidSettingPage) self.settingButton = self.readYaml.getNode(self.androidUserInfoPage, "settingButton") self.loginOutButton = self.readYaml.getNode(self.settingPage, "loginOutButton") self.affirmLoginoutButton = self.readYaml.getNode( self.settingPage, "affirmLoginoutButton")
def send_mail(self): # 定义发件人邮箱,密码和收件人的list sender = ReadYaml(location.CONFIG_FILE).yaml_data()['MAIL_SENDER'] passwd = ReadYaml(location.CONFIG_FILE).yaml_data()['MAIL_PASSWORD'] receiver = ReadYaml(location.CONFIG_FILE).yaml_data()['MAIL_RECEIVERS'] msg = MIMEMultipart() msg["Subject"] = 'Selenium自动化测试报告' # 邮件主题 msg["From"] = sender msg["To"] = ','.join(receiver) # 收件人邮箱列表,以逗号分隔 # 邮件正文 part_con = MIMEText("Hi all,\nThis is Selenium自动化测试报告 ", 'plain', 'utf-8') msg.attach(part_con) # 邮件添加正文 report_file_path = os.path.join(location.REPORT_PATH, 'report_' + self.tsmp + '.html') if os.path.exists(report_file_path): part_attach = MIMEApplication(open(report_file_path, 'rb').read()) part_attach.add_header('Content-Disposition', 'attachment', filename='report_' + self.tsmp + '.html') msg.attach(part_attach) # 邮件添加附件 s = smtplib.SMTP("smtp.exmail.qq.com", timeout=30) # 连接邮件服务器 s.login(sender, passwd) # 登录服务器 s.sendmail(sender, receiver, msg.as_string()) # 发送邮件 print("邮件发送成功") s.close() else: raise FileNotFoundError("测试报告不存在")
def __init__(self, driver): self.driver = driver self.db = DbOption() self.readYaml = ReadYaml() self.base = BaseApi(self.driver) self.comePersonal = ClickPersonal(driver) self.indexHolder = IndexHolder(self.driver) self.userInfoPage = self.readYaml.getStream(FilePath.iOSUserInfolPage) self.personalPage = self.readYaml.getStream(FilePath.iOSPersonalPage) self.saveButton = self.readYaml.getNode(self.personalPage, "saveButton") self.backButton = self.readYaml.getNode(self.personalPage, "backButton") self.updateNamePage = self.personalPage.get("updateNamePage") self.updateNameButton = self.updateNamePage.get("updateNameButton") self.updateNameInputButton = self.updateNamePage.get( "updateNameInputButton") self.updateSummaryPage = self.personalPage.get("updateSummaryPage") self.updateSummaryButton = self.updateSummaryPage.get( "updateSummaryButton") self.setSummary = self.updateSummaryPage.get("setSummary") self.SummaryFlage = self.updateSummaryPage.get("SummaryFlage") self.updateSchoolButton = self.personalPage.get("updateSchoolButton") self.update_workButton = self.personalPage.get("update_workButton")
class TestParametrization(unittest.TestCase): """简单的unittest参数化""" url = ReadYaml(location.CONFIG_FILE).yaml_data()['URL'] phonenumber = ReadYaml(os.path.join( location.DATA_PATH, 'logindata.yaml')).yaml_data()['username'] password = ReadYaml(os.path.join(location.DATA_PATH, 'logindata.yaml')).yaml_data()['password'] param = list(zip(phonenumber, password)) def setUp(self): self.driver = Driver().driver() self.driver.get(self.url) self.driver.maximize_window() @parameterized.expand(param) @unittest.skip("测试强制跳过") # 装饰器调用时从下往上,执行时从上往下 def testLogin(self, username, password): """参数化测试登录""" LoginSys(self.driver, username, password).login() WebDriverWait(self.driver, 20, 0.5).until( ec.visibility_of_element_located(menu.MyWorkPanel)) self.assertEqual( self.driver.find_element(*menu.MyWorkPanel).is_displayed(), True) def tearDown(self): self.driver.quit()
def __init__(self, driver): self.driver = driver self.base = BaseApi(driver) self.indexHolder = IndexHolder(driver) self.readYaml = ReadYaml() self.userInfoPage = self.readYaml.getStream(FilePath.iOSUserInfolPage) self.personalButtons = self.readYaml.getNode(self.userInfoPage, "personalButtons")
def __init__(self): self.mylogger = MyLogger(self.__class__.__name__).getlogger() self.read = ReadYaml() btclassDB = self.read.getStream(FilePath.dbConfigPath)["DB_data"] self.host = btclassDB["host"] self.username = btclassDB["username"] self.password = btclassDB["password"] self.port = btclassDB["port"] self.basename = btclassDB["basename"] self.conn = None
def testcChangePassword(self, driver, driverFunc): updateChangePassword = UpdateChangePassword(driver) readYaml = ReadYaml() user = readYaml.getStream(FilePath.androidLoginParams) passWord = user[0]["password"] new_password = '******' updateChangePassword.update(passWord, new_password) user_id = user[0]["account"] updateChangePassword.checkUpdateRes(user_id, new_password) updateChangePassword.update(new_password, passWord) updateChangePassword.checkUpdateRes(user_id, passWord) time.sleep(5)
class ImGroup(object): __metaclass__ = abc.ABCMeta def __init__(self, driver): self.readYaml = ReadYaml() self.base = BaseApi(driver) #校园页面 self.schoolNavigationBar = self.readYaml.getStream( FilePath.androidIndexPage) self.schoolclass = self.readYaml.getNode(self.schoolNavigationBar, 'class') #获取通讯录元素路径 self.imGroup = self.readYaml.getStream(FilePath.androidGroup) #通讯录页面 self.addressList = self.readYaml.getNode(self.imGroup, 'addressList') #添加好友页面 self.addFriend = self.readYaml.getNode(self.imGroup, 'addFriend') #添加好友输入框 self.addFriendScanf = self.readYaml.getNode(self.imGroup, 'addFriendScanf') #添加好友按钮 self.addFriendButton = self.readYaml.getNode(self.imGroup, 'addFriendButton') #添加好友验证按钮 self.sendFriendButton = self.readYaml.getNode(self.imGroup, 'sendFriendButton') @abc.abstractmethod def update(self, *args, **kwargs): pass
def __init__(self, driver): self.driver = driver self.base = BaseApi(self.driver) self.readyaml = ReadYaml() self.indexPage = self.readyaml.getStream(FilePath.androidIndexPage) self.explore = self.readyaml.getNode(self.indexPage, "explore") self.classTab = self.readyaml.getNode(self.indexPage, "class") self.reconnetButton = self.readyaml.getNode(self.indexPage, "reconnetButton") self.questionBank = self.readyaml.getNode(self.indexPage, "questionBank") self.myStudy = self.readyaml.getNode(self.indexPage, "myStudy") self.mySelf = self.readyaml.getNode(self.indexPage, "mySelf") print(self.mySelf)
class TestIntranet(unittest.TestCase): """内网测试(串联业务,demo为登录后登出)""" url = ReadYaml(location.CONFIG_FILE).yaml_data()['URL'] @classmethod def setUpClass(cls): cls.driver = Driver().driver() cls.driver.get(cls.url) cls.driver.maximize_window() @classmethod def tearDownClass(cls): cls.driver.quit() def testLoginWithRememnerPassword(self): """记住密码登录测试""" LoginSys(self.driver, '15102100358', '123456').loginWithRememberPassword() WebDriverWait(self.driver, 20, 0.5).until(ec.visibility_of_element_located(menu.MyWorkPanel)) self.assertEqual(self.driver.find_element(*menu.MyWorkPanel).is_displayed(), True) @unittest.skip("强制跳过普通登录测试") def testLogin(self): """普通登录测试""" LoginSys(self.driver, '15102100358', '123456').login() WebDriverWait(self.driver, 20, 0.5).until(ec.visibility_of_element_located(menu.MyWorkPanel)) self.assertEqual(self.driver.find_element(*menu.MyWorkPanel).is_displayed(), True) def testLogout(self): """登出测试""" self.driver.find_element(*menu.UserInfo).click() time.sleep(1) self.driver.find_element(*menu.Logout).click() WebDriverWait(self.driver, 20, 0.5).until(ec.visibility_of_element_located(login.register)) self.assertEqual(self.driver.find_element(*login.register).is_displayed(), True)
def __init__(self, driver): self.driver = driver self.readyaml = ReadYaml() self.base = BaseApi(self.driver) self.imImdexPage = self.readyaml.getStream(FilePath.iOSImIndexPage) self.reconnect = self.imImdexPage.get("reconnect") self.searchButton = self.imImdexPage.get("searchButton") self.searchFild = self.imImdexPage.get("searchFild") self.QuestionResonse = self.imImdexPage.get("QuestionResonse") self.DoubtResonse = self.imImdexPage.get("DoubtResonse") self.classGroupResonse = self.imImdexPage.get("classGroupResonse") self.addressButton = self.imImdexPage.get("addressButton") self.systemNotice = self.imImdexPage.get("systemNotice") self.doubtButton = self.imImdexPage.get("doubtButton") self.classGroupButton = self.imImdexPage.get("classGroupButton")
class AndroidRun(object): def __init__(self): self.path = FilePath() self.yaml = ReadYaml() def startAppiumServer(self, data): """ pytest 使用外部 driverDict 参数 启动 Appium server :param data: driverDict :return: """ driverName = data["deviceName"] # pytest.main(["-s", "--driverDict={0}".format(data), "--html={0}/{1}.html".format(FilePath.reportPath,driverName),"{0}".format(FilePath.androidTestDir)]) pytest.main([ "-s", "--driverDict={0}".format(data), "--html={0}/{1}.html".format(FilePath.reportPath, driverName), "{0}".format( r"C:\Users\qi\PycharmProjects\TpKeyWord\test\Android\testPersonalPage.py" ) ]) def main(self): """ Android 测试入口方法, 根据连接的手机设备启动AppiumServer 1、读取所有手机配置信息 2、检查已经连接电脑的手机设备的udid 3、获取已连接设备的 配置信息 4、启动Appium 设备 :return: """ driverConfigPath = self.path.androidDriverPath driverData = self.yaml.getStream(driverConfigPath) connetcDriver = getConnectUdid() desired_pool = [] for udid in connetcDriver: if udid not in driverData: DriverUdidNotExit("配置文件没有设备:{0}的信息".format(udid)) for data in driverData: if data["udid"] == udid: break udid = data["udid"] host = data["host"] port = data["port"] server = AppiumServer(host, port, udid) server.startAppiumServer() pool = multiprocessing.Process(target=self.startAppiumServer, args=(data, )) desired_pool.append(pool) for pool in desired_pool: pool.start() for pool in desired_pool: pool.join()
def __init__(self, driver): self.driver = driver self.readYaml = ReadYaml() self.indexPage = self.readYaml.getStream(FilePath.iOSIndexPage) self.base = BaseApi(self.driver) self.closeAdButton = self.readYaml.getNode(self.indexPage, "closeAdButton") self.explorButton = self.readYaml.getNode(self.indexPage, "explorButton") self.classButton = self.readYaml.getNode(self.indexPage, "classButton") self.learnButton = self.readYaml.getNode(self.indexPage, "learnButton") self.questionBankButton = self.readYaml.getNode( self.indexPage, "questionBankButton") self.myselfButton = self.readYaml.getNode(self.indexPage, "myselfButton") self.navigation = self.readYaml.getNode(self.indexPage, "navigation")
class IndexPage(object): __metaclass__ = abc.ABCMeta def __init__(self, driver): self.driver = driver self.readYaml = ReadYaml() self.indexPage = self.readYaml.getStream(FilePath.iOSIndexPage) self.base = BaseApi(self.driver) self.closeAdButton = self.readYaml.getNode(self.indexPage, "closeAdButton") self.explorButton = self.readYaml.getNode(self.indexPage, "explorButton") self.classButton = self.readYaml.getNode(self.indexPage, "classButton") self.learnButton = self.readYaml.getNode(self.indexPage, "learnButton") self.questionBankButton = self.readYaml.getNode( self.indexPage, "questionBankButton") self.myselfButton = self.readYaml.getNode(self.indexPage, "myselfButton") self.navigation = self.readYaml.getNode(self.indexPage, "navigation") @abc.abstractmethod def switchNavigation(self): pass def closeAd(self): if self.base.iosCheckElement(self.closeAdButton): self.base.iosClick(self.closeAdButton)
def __init__(self,driver): self.readYaml = ReadYaml() self.loginPage = self.readYaml.getStream(FilePath.iOSLaunchPage) self.base = BaseApi(driver) self.indexHolder = IndexHolder(driver) self.mobileLoginButton = self.readYaml.getNode(self.loginPage,"mobileLoginButton") self.account = self.readYaml.getNode(self.loginPage,"account") self.passwd = self.readYaml.getNode(self.loginPage,"passwd") self.submit = self.readYaml.getNode(self.loginPage,"submit") self.learnTitle = self.readYaml.getNode(self.loginPage,"learnTitle") self.skipButton = self.readYaml.getNode(self.loginPage,"skipButton") self.checkLoginButton = self.readYaml.getNode(self.loginPage,"checkLoginButton") self.settingButton = self.readYaml.getNode(self.readYaml.getStream(FilePath.iOSUserInfolPage),"settingButton") self.settingPage = self.readYaml.getStream(FilePath.iOSettinglPage) self.loginOutButton = self.readYaml.getNode(self.settingPage,"loginOutButton") self.affireButton = self.readYaml.getNode(self.settingPage,"affireButton")
def __init__(self, driver, db): self.readYaml = ReadYaml() self.base = BaseApi(driver) self.login = Login(driver) self.db = db self.classGroupPage = ClassGroupPage(driver) self.adderPage = self.readYaml.getStream(FilePath.iOSImAdderPage) self.add_friend_button = self.adderPage.get("add_friend_button") self.add_friend_textField = self.adderPage.get("add_friend_textField") self.keybody_search_button = self.adderPage.get( "keybody_search_button") self.start_chat_button = self.adderPage.get("start_chat_button") self.addFriends = self.adderPage.get("addFriends") self.sendViryMsg = self.adderPage.get("sendViryMsg") self.cancelButton = self.adderPage.get("cancelButton") self.back_adder_button = self.adderPage.get("back_adder_button") self.back_im_list_button = self.adderPage.get("back_im_list_button") self.systemAddFriend = self.adderPage.get("systemAddFriend") self.agreeButton = self.adderPage.get("agreeButton")
class ClassGroupPage(object): def __init__(self, driver): self.driver = driver self.readyaml = ReadYaml() self.base = BaseApi(self.driver) self.imImdexPage = self.readyaml.getStream(FilePath.iOSImIndexPage) self.reconnect = self.imImdexPage.get("reconnect") self.searchButton = self.imImdexPage.get("searchButton") self.searchFild = self.imImdexPage.get("searchFild") self.QuestionResonse = self.imImdexPage.get("QuestionResonse") self.DoubtResonse = self.imImdexPage.get("DoubtResonse") self.classGroupResonse = self.imImdexPage.get("classGroupResonse") self.addressButton = self.imImdexPage.get("addressButton") self.systemNotice = self.imImdexPage.get("systemNotice") self.doubtButton = self.imImdexPage.get("doubtButton") self.classGroupButton = self.imImdexPage.get("classGroupButton") def switchSystem(self): """ 点击进入系统消息 :return: """ self.base.iosClick(self.systemNotice) def switchAdders(self): """ 点击进入通讯录 :return: """ self.base.iosClick(self.addressButton) def indexSearch(self, searchContent, searchType): """ 校园首页搜索 :param searchContent: :param searchType: :return: """ pass def switchDoubt(self): """ 选择问答 :return: """ self.base.iosClick(self.doubtButton) def switchClassGroup(self): """ 选择班级 :return: """ self.base.iosClick(self.classGroupButton)
class TestRegister(unittest.TestCase): """注册测试""" url = ReadYaml(location.CONFIG_FILE).yaml_data()['URL'] randomPhoneNumber = createPhonenumber.createRandomPhoneNumber() @classmethod def setUpClass(cls): cls.driver = Driver().driver() cls.driver.get(cls.url) cls.driver.maximize_window() @classmethod def tearDownClass(cls): cls.driver.quit() def testRegister_1(self): """注册第一步""" cookie = { self.driver.get_cookies()[0]['name']: self.driver.get_cookies()[0]['value'] } self.driver.find_element(*login.register).click() self.driver.find_element(*register.inputPhonenumber).send_keys( self.randomPhoneNumber) mobcode = getMobileCode.getmobilecode(self.url, self.randomPhoneNumber, cookie) self.driver.find_element(*register.mobileCode).send_keys(mobcode) time.sleep(5) self.driver.find_element(*register.nextStep).click() WebDriverWait(self.driver, 20, 0.5).until( ec.visibility_of_element_located(register.male)) self.assertEqual( self.driver.find_element(*register.male).is_displayed(), True) self.assertEqual( self.driver.find_element(*register.female).is_displayed(), True) def testRegister_2(self): """注册第二步""" self.driver.find_element( *register.inputName).send_keys('测试' + self.randomPhoneNumber) self.driver.find_element(*register.female).click() self.driver.find_elements(*register.inputPassword)[1].send_keys( '123456') # 这里有点问题,根据属性值定位不到 self.driver.find_element(*register.confirmPassword).send_keys('123456') self.driver.find_element(*register.chooseDep).click() self.driver.find_element(*register.chooseInroadChemicalPlant).click() self.driver.find_element(*register.registerBtn).click() WebDriverWait(self.driver, 20, 0.5).until( ec.visibility_of_element_located(login.register)) self.assertEqual( self.driver.find_element(*login.register).is_displayed(), True)
class ImAdderPage(object): __metaclass__ = abc.ABCMeta def __init__(self, driver, db): self.readYaml = ReadYaml() self.base = BaseApi(driver) self.login = Login(driver) self.db = db self.classGroupPage = ClassGroupPage(driver) self.adderPage = self.readYaml.getStream(FilePath.iOSImAdderPage) self.add_friend_button = self.adderPage.get("add_friend_button") self.add_friend_textField = self.adderPage.get("add_friend_textField") self.keybody_search_button = self.adderPage.get( "keybody_search_button") self.start_chat_button = self.adderPage.get("start_chat_button") self.addFriends = self.adderPage.get("addFriends") self.sendViryMsg = self.adderPage.get("sendViryMsg") self.cancelButton = self.adderPage.get("cancelButton") self.back_adder_button = self.adderPage.get("back_adder_button") self.back_im_list_button = self.adderPage.get("back_im_list_button") self.systemAddFriend = self.adderPage.get("systemAddFriend") self.agreeButton = self.adderPage.get("agreeButton") @abc.abstractmethod def addFirend(self, *args, **kwargs): """ 添加好友 :return: """ pass @abc.abstractmethod def newFridentSearch(self, *args, **kwargs): """ 新朋友搜索 :param args: :param kwargs: :return: """ pass @abc.abstractmethod def imGroup(self, groupName): """ 班组 :param groupName: 班组名称 :return: """ pass
class PersonalHolder(object): __metaclass__ = abc.ABCMeta def __init__(self, driver): self.driver = driver self.db = DbOption() self.readYaml = ReadYaml() self.base = BaseApi(self.driver) self.comePersonal = ClickPersonal(driver) self.indexHolder = IndexHolder(self.driver) self.userInfoPage = self.readYaml.getStream(FilePath.iOSUserInfolPage) self.personalPage = self.readYaml.getStream(FilePath.iOSPersonalPage) self.saveButton = self.readYaml.getNode(self.personalPage, "saveButton") self.backButton = self.readYaml.getNode(self.personalPage, "backButton") self.updateNamePage = self.personalPage.get("updateNamePage") self.updateNameButton = self.updateNamePage.get("updateNameButton") self.updateNameInputButton = self.updateNamePage.get( "updateNameInputButton") self.updateSummaryPage = self.personalPage.get("updateSummaryPage") self.updateSummaryButton = self.updateSummaryPage.get( "updateSummaryButton") self.setSummary = self.updateSummaryPage.get("setSummary") self.SummaryFlage = self.updateSummaryPage.get("SummaryFlage") self.updateSchoolButton = self.personalPage.get("updateSchoolButton") self.update_workButton = self.personalPage.get("update_workButton") @abc.abstractmethod def update(self, *args, **kwargs): pass
def __init__(self): option = webdriver.ChromeOptions() option.add_argument('disable-infobars') # 隐藏'Chrome正在受到自动软件的控制'这个提示语 browser_info = ReadYaml(location.CONFIG_FILE).yaml_data() if browser_info['BROWSER'].upper() == 'CHROME': print( "Please confirm the matching releationship of chromedriver and chrome" ) self.d = webdriver.Chrome( executable_path=browser_info['BROWSER_DRIVER_PATH'], chrome_options=option) elif browser_info['BROWSER'].upper() == 'FIREFOX': print( "Please confirm the matching releationship of geckodriver and firefox" ) self.d = webdriver.Firefox( executable_path=browser_info['BROWSER_DRIVER_PATH']) else: print("Please use chrome or firefox, thanks!") self.d = None
class IndexPage(object): def __init__(self, driver): self.driver = driver self.base = BaseApi(self.driver) self.readyaml = ReadYaml() self.indexPage = self.readyaml.getStream(FilePath.androidIndexPage) self.explore = self.readyaml.getNode(self.indexPage, "explore") self.classTab = self.readyaml.getNode(self.indexPage, "class") self.reconnetButton = self.readyaml.getNode(self.indexPage, "reconnetButton") self.questionBank = self.readyaml.getNode(self.indexPage, "questionBank") self.myStudy = self.readyaml.getNode(self.indexPage, "myStudy") self.mySelf = self.readyaml.getNode(self.indexPage, "mySelf") print(self.mySelf) def comeNATIVEAPP(self): """切换到原生""" self.base.switchContext("NATIVE_APP") def chooseNavigation(self): pass
def __init__(self, driver): self.logger = MyLogger(self.__class__.__name__).getlogger() self.driver = driver self.base = BaseApi(self.driver) self.readYaml = ReadYaml() self.mySelf = MySelf(self.driver) # 我的页面 self.userInfoPage = self.readYaml.getStream( FilePath.androidUserInfoPage) # 个人资料按钮 self.personalCenter = self.readYaml.getNode(self.userInfoPage, "personalCenter") #获取我的页面当前用户名 self.userName = self.readYaml.getNode(self.userInfoPage, 'userName') # 个人资料页面 self.personalPage = self.readYaml.getStream( FilePath.androidPersonalPage) self.updateNameButton = self.readYaml.getNode(self.personalPage, "updateNameButton") self.updateNameInputButton = self.readYaml.getNode( self.personalPage, "updateNameInputButton") self.updateNameSaveButton = self.readYaml.getNode( self.personalPage, "updateNameSaveButton") #返回 self.backButton = self.readYaml.getNode(self.personalPage, "backButton") #修改密码 self.updatePasswdButton = self.readYaml.getNode( self.personalPage, "updatePasswdButton") self.oldPasswordFild = self.readYaml.getNode(self.personalPage, "oldPasswordFild") self.newPasswordFild = self.readYaml.getNode(self.personalPage, "newPasswordFild") self.affirePasswordFild = self.readYaml.getNode( self.personalPage, "affirePasswordFild") self.savePassword = self.readYaml.getNode(self.personalPage, "savePassword") #修改学校 self.schoolButton = self.readYaml.getNode(self.personalPage, "schoolButton") self.schoolFile = self.readYaml.getNode(self.personalPage, "schoolFile") self.schoolNameText = self.readYaml.getNode(self.personalPage, "schoolNameText") #修改简介 self.updateSummaryButton = self.readYaml.getNode( self.personalPage, "updateSummaryButton") self.newSummaryFild = self.readYaml.getNode(self.personalPage, "newSummaryFild") self.newSummaryText = self.readYaml.getNode(self.personalPage, "newSummaryText") #修改工作单位 self.workButton = self.readYaml.getNode(self.personalPage, "workButton") self.workFild = self.readYaml.getNode(self.personalPage, "workFild") self.workNameText = self.readYaml.getNode(self.personalPage, "workNameText")
class Login(object): def __init__(self,driver): self.readYaml = ReadYaml() self.loginPage = self.readYaml.getStream(FilePath.iOSLaunchPage) self.base = BaseApi(driver) self.indexHolder = IndexHolder(driver) self.mobileLoginButton = self.readYaml.getNode(self.loginPage,"mobileLoginButton") self.account = self.readYaml.getNode(self.loginPage,"account") self.passwd = self.readYaml.getNode(self.loginPage,"passwd") self.submit = self.readYaml.getNode(self.loginPage,"submit") self.learnTitle = self.readYaml.getNode(self.loginPage,"learnTitle") self.skipButton = self.readYaml.getNode(self.loginPage,"skipButton") self.checkLoginButton = self.readYaml.getNode(self.loginPage,"checkLoginButton") self.settingButton = self.readYaml.getNode(self.readYaml.getStream(FilePath.iOSUserInfolPage),"settingButton") self.settingPage = self.readYaml.getStream(FilePath.iOSettinglPage) self.loginOutButton = self.readYaml.getNode(self.settingPage,"loginOutButton") self.affireButton = self.readYaml.getNode(self.settingPage,"affireButton") def login(self,account,password): self.loginout() mobileLoginEles = self.base.iosPredicates(self.mobileLoginButton) for loginButton in mobileLoginEles: visible = loginButton.get_attribute("visible") if visible == "true": loginButton.click() break if self.base.iosCheckElement(self.account): self.base.setValue(self.account,account,1) self.base.setValue(self.passwd,password,10) self.base.iosClick(self.submit) else: raise EleNotFound("输入账号框未找到") def checkLogin(self,checkCountFlage=5): """ 检查账号是否已经登录 :param checkCountFlage: :return: """ skipStast = self.skip() if skipStast: return skipStast flage = True checkCount = 0 while flage and checkCount<checkCountFlage: if self.base.iosCheckElement(self.checkLoginButton): flage = False res = True if checkCount and checkCount==checkCountFlage-1: res = False checkCount+=1 return res def loginout(self): if self.checkLogin(2): self.indexHolder.switchNavigation("我的") self.base.iosClick(self.settingButton) self.base.swipeDown() self.base.iosClick(self.loginOutButton) self.base.iosClick(self.affireButton) def skip(self): if self.base.iosCheckElement(self.skipButton,10): skipButton = self.base.iosPredicate(self.skipButton) flage = True findNum = 0 while flage and findNum <4: status = skipButton.get_attribute("visible") if status: self.base.iosClick(self.skipButton) flage = False findNum +=1 return True
def __init__(self): self.path = FilePath() self.yaml = ReadYaml()
class LoginPage(object): """ 登录类 """ def __init__(self, driver): self.driver = driver self.logger = MyLogger(self.__class__.__name__).getlogger() # 获取日志 self.baseView = BaseApi(self.driver) self.launchPath = FilePath().androidLaunchPage self.readYaml = ReadYaml() self.myself = MySelf(driver) self.launchPage = self.readYaml.getStream(self.launchPath) self.launchEle = self.launchPage.get("launch", False) self.checkLoginEle = self.launchPage.get("ckeckLogin", False) # 登录成功校验元素 self.mobileLoginButton = self.readYaml.getNode(self.launchEle, "mobileLoginButton") self.aaccount = self.readYaml.getNode(self.launchEle, "aaccount") self.passwd = self.readYaml.getNode(self.launchEle, "passwd") self.submitButton = self.readYaml.getNode(self.launchEle, "submitButton") self.forgetPasswd = self.readYaml.getNode(self.launchEle, "forgetPasswd") self.androidUserInfoPage = self.readYaml.getStream( FilePath.androidUserInfoPage) self.settingPage = self.readYaml.getStream(FilePath.androidSettingPage) self.settingButton = self.readYaml.getNode(self.androidUserInfoPage, "settingButton") self.loginOutButton = self.readYaml.getNode(self.settingPage, "loginOutButton") self.affirmLoginoutButton = self.readYaml.getNode( self.settingPage, "affirmLoginoutButton") def login(self, userName, password): """ 登录 :param userName: 账号 :param password: 密码 :return: """ self.loginOut() # 如果已登录会退出登录 if self.baseView.checkElement(self.mobileLoginButton): self.baseView.click(self.mobileLoginButton) else: raise EleNotFound("账号登录按钮未找到") if self.baseView.checkElement(self.aaccount): self.baseView.sendKeys(self.aaccount, userName) self.baseView.sendKeys(self.passwd, password) self.baseView.click(self.submitButton) print('登录成功') else: raise EleNotFound("输入账号按钮未找到") def checkLogin(self, checkCountFlage=5): """ 多次容错检查 首页探索元素 :return: bool """ checkFlage = True checkCount = 0 while checkFlage and checkCount < checkCountFlage: if self.baseView.checkElement( self.readYaml.getNode(self.checkLoginEle, "explore"), 5): checkFlage = False res = True if checkCount and checkCount == checkCountFlage - 1: res = False checkCount += 1 return res def loginOut(self): if self.checkLogin(3): #检查是否已经登录 self.myself.chooseNavigation() if self.baseView.checkElement(self.settingButton): self.baseView.click(self.settingButton) self.baseView.click(self.loginOutButton) self.baseView.click(self.affirmLoginoutButton)
def __init__(self, driver): self.readYaml = ReadYaml() self.base = BaseApi(driver)
def __init__(self): des_caps = ReadYaml(location.DES_CAPS_FILE_PATH).yaml_data() self.driver = webdriver.Remote("http://localhost:4723/wd/hub", des_caps) self.driver.implicitly_wait(10)