def flow_coin(self): # self.login_key() # self.skip_page() # self.check_bounced() try: flows = self.driver.find_elements(*self.flow_btn) except NoSuchElementException: logs.error("the flow_btn element not found") else: flows[2].click() self.driver.find_element(*self.exchange_btn).click() exc_list = self.driver.find_elements( *self.exchange_flow_btn) #页面有多个相同按钮,读取列表形式在切片取值 try: exc_list[1].click() btn_left = self.driver.find_element( *self.button_left) #确认兑换提示框 except NoSuchElementException: logs.info("流量币不足或已抢光!") self.getScreenshot("flowNotEnough") else: btn_left.click() total = self.driver.find_element( *self.flow_total_ele).get_attribute("text") self.getScreenshot("exchange_flow") return int(total)
def get_driver(self): data = self.conf.get_yamlfile() try: capabs = {} capabs["platformName"] = data["platformName"] capabs["platformVersion"] = data["platformVersion"] capabs["deviceName"] = data["deviceName"] # capabs["udid"] = data["udid"] # base_dir = os.path.dirname(os.path.dirname(__file__)) #获取当前文件根目录 base_dir = r"E:\appium_apk" #apk在电脑上的路径,启动成功后会自动安装apk # app_path = os.path.join(base_dir,'app',data["appname"]) app_path = os.path.join(base_dir,data["appname"]) capabs["app"] = app_path capabs["appPackage"] = data["appPackage"] capabs["appActivity"] = data["appActivity"] capabs["noReset"] = data["noReset"] capabs["automationName"] = data["automationName"] #打开这行可能会导致运行不稳定 # capabs["unicodeKeyboard"] = data["unicodeKeyboard"] capabs["newCommandTimeout"] = data["newCommandTimeout"] logs.info("start app...") driver = webdriver.Remote("http://%s:%s/wd/hub"%(data["ip"],data["port"]),capabs) # 设置隐性等待,在规定的时间内页面的所有元素都加载完了就执行下一步,否则一直等到时间截止,然后再继续下一步。 driver.implicitly_wait(10) return driver except Exception as e: logs.error("Appium服务未启动或设备devices未连接!",e) exit()
def check_login_status(self): try: self.driver.find_element(*self.ibtn).click() self.find_element(*self.phone_tv) except NoSuchElementException: logs.info("login fail!") self.getScreenshot('login fail') #失败截图 return False else: logs.info("login success!") return True
def logoutView(self): try: self.check_bounced() except NoSuchElementException: pass else: self.driver.find_element(*self.ibtn).click() self.driver.find_element(*self.setting_btn).click() self.driver.find_element(*self.logout_btn).click() self.driver.find_element(*self.button_left).click() logs.info("logout success!") self.getScreenshot("logout")
import HTMLTestRunner import unittest from common.recordlog import logs import time from base.globalpath import report_path, testcase_path from common.sendEmail import SendEmail if __name__ == "__main__": load_case = unittest.defaultTestLoader.discover( testcase_path, 'test_flowcoin.py') #加载用例,固定的 # # load_case = unittest.defaultTestLoader.discover(testcase_path,'test_*.py') #模糊匹配 now = time.strftime("%Y-%m-%d %H_%M_%S") report_name = report_path + "\%s_%s" % (now, "testReport.html") #报告名称 with open(report_name, 'wb') as rf: runner = HTMLTestRunner.HTMLTestRunner( stream=rf, title='惠三秦UI自动化测试', description='惠三秦Android端测试用例执行结果') logs.info("start run test case!") runner.run(load_case) # SendEmail().send_email(report_name)
def getScreenshot(self,module): time = self.getTime() image_file = '%s/%s_%s.png'%(screen_path,module,time) logs.info("get %s screenshot"%module) self.driver.get_screenshot_as_file(image_file)