def find_element(self, element_info): """ 根据提供的元素参数信息进行查找 :param element_info: 元素信息,字典类型 :return: element对象 """ try: locator_element_name = element_info['element_name'] locator_type_name = element_info['locator_type'] locator_value_info = element_info['locator_value'] locator_timeout = element_info['timeout'] if locator_type_name == 'id': locator_type = By.ID elif locator_type_name == 'class_name': locator_type = By.CLASS_NAME elif locator_type_name == 'XPATH': locator_type = By.XPATH elment = WebDriverWait(self.driver, int(locator_timeout))\ .until(lambda x: x.find_element(locator_type, locator_value_info)) logger.info('%s: 元素识别成功' % locator_element_name) except Exception as e: logger.error('%s: 元素识别失败,原因是:%s' % (locator_element_name, e.__str__())) self.screenshot_as_file() # finally: # if elment is None: # elment = '' return elment
def setUp(self) -> None: logger.info('----------测试方法开始执行----------') self.driver = browser.get_driver() self.base_page = BasePage(self.driver) self.base_page.set_browser_max() self.base_page.time() self.base_page.open_url(self.url)
def get_driver(self): if str(self.__driver_name).lower() == 'chrome': logger.info('初始化浏览器并启动谷歌浏览器') return self.__get_chrome_driver() elif str(self.__driver_name).lower() == 'firefox': logger.info('初始化浏览器并启动火狐浏览器') return self.__get_firefox_driver()
def tearDown(self) -> None: # 测试失败用例截图 errors = self._outcome.errors for test, exc_info in errors: if exc_info: self.base_page.screenshot_as_file() self.base_page.close_tab() logger.info('----------测试方法开始完毕----------')
def switch_to_alert(self, action='accept', timeout=int(config.time_out)): WebDriverWait(self.driver, timeout).until(EC.alert_is_present()) alert = self.driver.switch_to.alert text = alert.text if action == 'accept': logger.info('弹窗提示值为: %s' % text) alert.accept() else: alert.dismiss() return text
def find_element(self,element_info): locator_type_name = element_info['locator_type'] locator_value_info = element_info['locator_value'] locator_timeout = element_info['timeout'] if locator_type_name == 'id': locator_type = By.ID elif locator_type_name == 'class': locator_type = By.CLASS_NAME elif locator_type_name == 'xpath': locator_type =By.XPATH element = WebDriverWait(self.driver, locator_timeout) \ .until(lambda x: x.find_element(locator_type, locator_value_info)) logger.info('[%s]元素识别成功' % element_info['element_name']) # element = WebDriverWait(self.driver, locator_timeout)\ # .until(EC.presence_of_element_located((locator_type, locator_value_info))) return element
def find_element(self, element_info): locator_element_name = element_info['element_name'] locator_type_name = element_info['locator_type'] locator_value_info = element_info['locator_value'] locator_timeout = element_info['timeout'] if locator_type_name == 'id': locator_type = By.ID elif locator_type_name == 'CLASS_NAME': locator_type = By.CLASS_NAME elif locator_type_name == 'XPATH': locator_type = By.XPATH elment = WebDriverWait(self.driver, int(locator_timeout)) \ .until(lambda x: x.find_element(locator_type, locator_value_info)) logger.info('%s: 元素识别成功' % locator_element_name) return elment
def get_text(self, element_info): text = self.find_element(element_info).text logger.info('%s: 对象的文本信息为【%s】' % (element_info['element_name'], text))
def get_attribute(self, element_info): value = self.find_element(element_info).get_attribute('title') logger.info('%s: 属性值为【%s】' % (element_info['element_name'], value))
def input(self, element_info, content): self.find_element(element_info).send_keys(content) logger.info('%s: 输入内容【%s】' % (element_info['element_name'], content))
def click(self, element_info): self.find_element(element_info).click() logger.info('%s: 点击操作成功' % element_info['element_name'])
def get_username(self): value = self.username_showspan.text logger.info('获取用户名成功,用户名是:' + str(value)) return value
def refresh(self): self.driver.refresh() logger.info('浏览器刷新')
def set_browser_max(self): self.driver.maximize_window() logger.info('浏览器最大化')
def click(self, element_info): locator_element_name = element_info['element_name'] self.find_element(element_info).click() logger.info('%s点击操作成功' % locator_element_name)
def get_title(self): value = self.dirver.title logger.info('获取网页标题,标题是%s' %value) return value
def refresh(self): self.dirver.refresh() logger.info('浏览器刷新操作')
def setUpClass(cls) -> None: logger.info('==========测试类开始执行==========') cls.url = config.zantao_url
def tearDownClass(cls) -> None: logger.info('==========测试类执行完毕==========') pass
def input_username(self, username): #方法=====>控件的操作 self.username_inputbox.send_keys(username) logger.info('用户名输入框输入:' + str(username))
def input_password(self, password): self.password_inputbox.send_keys(password) logger.info('密码输入框输入:' + str(password))
def get_title(self): value = self.driver.title logger.info('获取元素名称:%s' % value) return value
def open_url(self, url): self.driver.get(url) logger.info('打开url地址:%s' % url)
def exit_driver(self): self.driver.quit() logger.info('退出浏览器')
def set_browser_min(self): self.driver.minimize_window() logger.info('浏览器最小化')
def input(self,element_info,content): element = self.find_element(element_info) element.send_keys(content) logger.info('[%s]元素输入内容:%s' %(element_info['element_name'],content))
def get_title(self, title): value = self.driver.title.text logger.info('获取元素名称:%s' % value)
def click_login(self): self.login_button.click() logger.info('点击登录按钮成功')
def input(self, element_info, content): locator_element_name = element_info['element_name'] self.find_element(element_info).send_keys(content) logger.info('%s输入内容【%s】' % (locator_element_name, content))
def click(self, element_info): element = self.find_element(element_info) element.click() logger.info('[%s]元素进行点击操作' % element_info['element_name'])