def run(self): for index in range(0, len(self.teststeplist)): try: eval(self.teststeplist[index]) except Exception as e: log.logger( 'ERROR', '执行语句错误,错误语句为{}:{}'.format(self.teststeplist[index], e))
def get_sheet_names(filename): global sheetlist f = os.path.join(EXCELPATH, filename) + '.xlsx' try: wb = load_workbook(f) sheetlist = wb.sheetnames except Exception as e: log.logger('ERROR', '打开excel失败:{}'.format(e)) return sheetlist
def inputValue(by, locator, value): log.logger('INFO', '===输入内容===') log.logger('INFO', '目标定位方式为:{}'.format(by)) log.logger('INFO', '目标定位对象为:{}'.format(locator)) log.logger('INFO', '目标对象输入内容为:{}'.format(value)) try: getElement(driver, by, locator).send_keys(value) except Exception as e: log.logger('ERROR', '输入内容失败:{}'.format(e))
def get_file_list(): """ 取到script文件夹下所有excel的list """ file_name_list = [] try: file_list = os.listdir(EXCELPATH) except Exception as e: log.logger('ERROR', '获取excel文件失败:{}'.format(e)) raise e for file in file_list: if os.path.splitext(file)[-1] == '.xlsx': file_name_list.append(os.path.splitext(file)[0]) return file_name_list
def click(by, locator): log.logger('INFO', '===点击操作===') log.logger('INFO', '目标定位方式为:{}'.format(by)) log.logger('INFO', '目标定位对象为:{}'.format(locator)) try: getElement(driver, by, locator).click() except Exception as e: log.logger('ERROR', '点击失败:{}'.format(e))
def switchToFrame(by, locator): log.logger('INFO', '===切换frame===') log.logger('INFO', '目标定位方式为:{}'.format(by)) log.logger('INFO', '目标定位对象为:{}'.format(locator)) try: driver.switch_to_frame(getElement(driver, by, locator)) except Exception as e: log.logger('ERROR', '切换frame失败:{}'.format(e))
def clear(by, locator): log.logger('INFO', '===清除目标框内容===') log.logger('INFO', '目标定位方式为:{}'.format(by)) log.logger('INFO', '目标定位对象为;{}'.format(locator)) try: getElement(driver, by, locator).clear() except Exception as e: log.logger('ERROR', '清除内容失败:{}'.format(e))
def get_stpes_data(self): row = self.view_stepstable.rowCount() self.testcstepsdata = [] for item in range(0, row): testdict = [] for i in range(1, 6): try: temp = self.view_stepstable.item(item, i - 1) if temp: testdict.append(temp.text()) else: testdict.append('NA') except Exception as e: log.logger('ERROR', e) self.testcstepsdata.append(testdict.copy()) # 获取需要保存的steps数据 print(self.testcstepsdata)
def get_sheet_value(filename, sheetname): global sh, wb datapath = os.path.join(EXCELPATH, filename) + '.xlsx' try: wb = load_workbook(datapath) except Exception as e: log.logger('WARNING', '未找到excel文件:{}'.format(e)) try: sh = wb[sheetname] except Exception as e: log.logger('WARNING', '未找到sheetname:{}'.format(e)) tablevalue = [] rows = sh.max_row if rows < 2: return None else: for row in range(2, rows + 1): stepdict = [] for i in range(1, 6): stepdict.append(sh.cell(row, i).value) tablevalue.append(stepdict) return tablevalue
def loadUrl(url): log.logger('INFO', '===载入网址===') log.logger('INFO', '载入网址为:{}'.format(url)) global driver try: driver.get(url) except Exception as e: log.logger('ERROR', '载入网址失败:{}'.format(e))
def screenshot(): log.logger('INFO', '===截图===') picturename =EXCEPTPATH + f'\wu.png' try: driver.get_screenshot_as_file(picturename) except Exception as e: log.logger('ERROR', '截图失败:{}'.format(e)) log.logger('INFO', '截图成功!存储地址为:{}'.format(picturename))
def getTitle(): global t log.logger('INFO', '===获取页面标题===') try: t = driver.title except Exception as e: log.logger('ERROR', '获取页面标题:{}'.format(e)) log.logger('INFO', '获取页面标题为:{}'.format(t))
def openBrowser(browser): global driver chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--no-sandbox') try: if browser.lower() == 'chrome': driver = webdriver.Chrome(executable_path=CHROMEPATH, chrome_options=chrome_options) log.logger('INFO', '===准备打开chrome浏览器===') else: driver = webdriver.Firefox(executable_path=CHROMEPATH) log.logger('INFO', '只下了chrome driver,你就当你打开了你要的') except Exception as e: log.logger('ERROR', '打开driver失败:{}'.format(e)) else: WaitUtil = WaitUntil(driver) log.logger('INFO', '打开成功')
def load_sheet(self): log.logger('INFO', '目前的excelname:{}'.format(self.currentexcelname)) log.logger('INFO', '目前的sheetname:{}'.format(self.currentsheetname)) self.testcstepsdata = ExcelReader.get_sheet_value( self.currentexcelname, self.currentsheetname) if self.testcstepsdata == None: log.logger('INFO', '选中sheet为空') else: row = len(self.testcstepsdata) self.view_stepstable.setRowCount(row) for i in range(0, row): for col in range(0, len(self.testcstepsdata[i])): temp = QTableWidgetItem(str(self.testcstepsdata[i][col])) self.view_stepstable.setItem(i, col, temp)
def execute_all(self): log.logger('INFO', '选中的sheename为:{}'.format(self.selectedcaseslist))
def save_sheet(filename, sheetname, testdata): datapath = os.path.join(EXCELPATH, filename) + '.xlsx' try: wb = load_workbook(datapath) log.logger('INFO', '存储到:{}'.format(filename)) except Exception as e: log.logger('ERROR', '未找到指定excel') wb = Workbook() wb.save(datapath) try: sh = wb[sheetname] log.logger('INFO', '存储到:{}'.format(sheetname)) except Exception as e: log.logger('INFO', '创建sheet:{}'.format(sheetname)) sh = wb.create_sheet(sheetname) sh['A1'] = '操作步骤' sh['B1'] = '关键字' sh['C1'] = '定位方式' sh['D1'] = '定位对象' sh['E1'] = '输入的值' for i in range(0, len(testdata)): for j in range(0, 5): sh.cell(i + 2, j + 1).value = testdata[i][j] try: wb.save(datapath) log.logger('INFO', '保存成功!') except Exception as e: log.logger('ERROR', '保存失败,是不是excel打开着,没权限存储了:e'.format(e))
def quitBrowser(): log.logger('INFO', '关闭浏览器') try: driver.quit() except Exception as e: log.logger('ERROR', '关闭浏览器失败:{}'.format(e))
def maximizeBrowser(): log.logger('INFO', '===浏览器最大化===') try: driver.maximize_window() except Exception as e: log.logger('ERROR', '最大化浏览器失败:{}'.format(e))
def assertbytext(by, locator, value): global t log.logger('INFO', '===验证指定元素text是否与预期结果一致===') try: t = getElement(driver, by, locator) except Exception as e: log.logger('ERROR', '获取元素失败:{}'.format(e)) if t.text() == value: log.logger('INFO', '获取到元素的text为:{}'.format(t.text())) log.logger('INFO', '预期的text结果为:{}'.format(value)) log.logger('INFO', '验证成功') else: log.logger('ERROR', '与预期结果不符,实际结果为:{}'.format(t.text())) log.logger('ERROR', '与预期结果不符,预期结果为:{}'.format(t.text())) log.logger('ERROR', '验证失败')
def item_click(self): self.selectedcaseslist = [] self.currentsheetname = self.view_sheetlist.currentItem().text() for i in self.view_sheetlist.selectedItems(): self.selectedcaseslist.append(i.text()) log.logger('INFO', '目前选中的用例为:{}'.format(self.currentsheetname))
def assign_sheet_list(self): self.view_sheetlist.clear() self.currentexcelname = self.comb_selectexcel.currentText() sheetnames = get_sheet_names(self.currentexcelname) self.view_sheetlist.addItems(sheetnames) log.logger("INFO", '目前选中的excel是:{}'.format(self.currentexcelname))
def add_line(self): row = self.view_stepstable.rowCount() log.logger("INFO", '行数为:{}'.format(row + 1)) self.view_stepstable.setRowCount(row + 1)
def sleepwait(sleepSeconds): log.logger('INFO', '===等待{}秒==='.format(sleepSeconds)) try: sleep(int(sleepSeconds)) except Exception as e: log.logger('ERROR', '等待这个动作本身失败:{}'.format(e))
def assertbyFalse(by, locator): global t log.logger('INFO', '===验证指定元素不存在===') try: t = getElement(driver, by, locator) except Exception as e: log.logger('ERROR', '获取元素失败:{}'.format(e)) if t: log.logger('INFO', '指定元素不存在') log.logger('INFO', '验证成功') else: log.logger('ERROR', '发现指定元素') log.logger('ERROR', '验证失败')
def assertbytitle(value): global t log.logger('INFO', '===验证页面标题是否与预期结果一致===') try: t = driver.title except Exception as e: log.logger('ERROR', '获取页面标题失败:{}'.format(e)) if t == value: log.logger('INFO', '获取到页面标题为:{}'.format(t)) log.logger('INFO', '预期的页面标题为:{}'.format(value)) log.logger('INFO', '验证成功') else: log.logger('ERROR', '与预期结果不符,实际标题为:{}'.format(t)) log.logger('ERROR', '与预期结果不符,预期标题为:{}'.format(value)) log.logger('ERROR', '验证失败')
def switchToDefaultFrame(): log.logger('INFO', '===切换回默认frame===') try: driver.switch_to_default_content() except Exception as e: log.logger('ERROR', '切换回默认frame失败:{}'.format(e))