From 023702f7d1d00015c1ba63c49e2161c58860efbc Mon Sep 17 00:00:00 2001 From: 阳洁 <2077506045@qq.com> Date: 星期三, 12 七月 2023 16:51:00 +0800 Subject: [PATCH] 测评系统自动测试 --- base/base_page.py | 154 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 154 insertions(+), 0 deletions(-) diff --git a/base/base_page.py b/base/base_page.py new file mode 100644 index 0000000..fe27a1b --- /dev/null +++ b/base/base_page.py @@ -0,0 +1,154 @@ +from selenium.common import TimeoutException +from selenium.webdriver.support.wait import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC + +class BasePage: + # 鍒濆鍖栨柟娉� + def __init__(self, driver): + self.driver = driver + + # 鍏冪礌瀹氫綅 + def get_element(self, locator): + return self.driver.find_element(*locator) + + # 澶氫釜鍏冪礌瀹氫綅 + def get_elements(self, locator): + return self.driver.find_elements(*locator) + + # 澶氫釜鍏冪礌瀹氫綅 + def get_elements_wait(self, locator): + wait = WebDriverWait(self.driver, 10, 0.5) + wait.until(EC.presence_of_element_located(locator)) + return self.driver.find_elements(*locator) + + # 鍦ㄦ寚瀹氬厓绱犱腑瀹氫綅鍏冪礌 + def get_element_in(self, element, locator): + return element.find_element(*locator) + + # 鍦ㄦ寚瀹氬厓绱犱腑瀹氫綅澶氫釜鍏冪礌 + def get_elements_in(self, element, *locator): + return element.find_elements(*locator) + + # 鍏冪礌瀹氫綅 + def get_element_wait(self, locator): + wait = WebDriverWait(self.driver, 10, 0.5) + wait.until(EC.presence_of_element_located(locator)) + return self.driver.find_element(*locator) + + # 浣跨敤js璇彞鐐瑰嚮 + def script_click(self, *locator): + item = self.get_element(*locator) + self.driver.execute_script("arguments[0].click();", item) + + def script_click_wait(self, *locator): + item = self.get_element_wait(*locator) + self.driver.execute_script("arguments[0].click();", item) + + # 鐐瑰嚮 + def click(self, locator): + """ + 鐐瑰嚮鍏冪礌 + :param locator: 鍏冪礌瀹氫綅 + :return: + """ + self.get_element(locator).click() + + def click_wait(self, *locator): + self.get_element_wait(*locator).click() + + # 杈撳叆 + def send_text(self, text, locator): + """ + 杈撳叆鍐呭 + :param text: 鍐呭 + :param locator: 鍏冪礌瀹氫綅 + :return: + """ + self.get_element(locator).send_keys(text) + + def send_text_wait(self, text, *locator): + self.get_element_wait(*locator).send_keys(text) + + # JavaScript鑾峰彇鍏冪礌鍊� + def get_input_value_js(self, locator): + input_box = self.get_element(locator) + input_value = self.driver.execute_script("return arguments[0].value", input_box) + return input_value + + def get_input_value_js_wait(self, *locator): + input_box = self.get_element_wait(*locator) + input_value = self.driver.execute_script("return arguments[0].value", input_box) + return input_value + + # 娓呴櫎 + def clear_text(self, *locator): + self.get_element(*locator).clear() + + def clear_text_wait(self, *locator): + self.get_element_wait(*locator).clear() + + # 琛ㄥ崟鍒囨崲 + def switch_iframe(self, locator): + self.driver.switch_to.frame(self.get_element(locator)) + + # 鍒囨崲鍒颁笂涓�灞傜殑iframe + def switch_parent_iframe(self): + self.driver.switch_to.parent_frame() + + def switch_iframe_wait(self, locator): + self.driver.switch_to.frame(self.get_element_wait(locator)) + + # 绐楀彛鍒囨崲 + def switch_window(self, n): + self.driver.switch_to.window(self.driver.window_handles[n]) + + # 妫�鏌ュ厓绱犳槸鍚﹀彲瑙佸彲鐐瑰嚮 + def check_clickable(self, *locator): + wait = WebDriverWait(self.driver, 10, 0.5) + try: + e = wait.until(EC.element_to_be_clickable(locator)) + if e is not None: + return True + except TimeoutException: + pass + return False + + # 绛夊緟鍏冪礌鍑虹幇 + def wait_appear(self, *locator): + wait = WebDriverWait(self.driver, 10, 0.5) + try: + e = wait.until(EC.presence_of_element_located(locator)) + if e is not None: + return True + except TimeoutException: + pass + return False + + # 婊戝姩椤甸潰 + def scroll_by(self, num): + self.driver.execute_script("window.scrollBy(0, " + num + ");") + + # 婊戝姩鍒板簳閮� + def scroll_to_bottom(self): + self.driver.execute_script("window.scrollBy(0,document.body.scrollHeight);") + + # 婊戝姩鍒伴《閮� + def scroll_to_top(self): + self.driver.execute_script("window.scrollBy(0,0);") + + # 鎴彇褰撳墠绐楀彛淇濆瓨涓哄浘鐗� + def get_png(self): + """鎴彇褰撳墠绐楀彛淇濆瓨涓哄浘鐗�""" + return self.driver.get_screenshot_as_png() + + def open_new_table_to_url(self, url): + """ + 鎵撳紑涓�涓柊鐨勬爣绛鹃〉锛屽苟璺宠浆鍒版寚瀹氱殑url + :return: + """ + # 鎵撳紑鏂版爣绛鹃〉 + self.driver.execute_script("window.open()") + # 鍒囨崲鍒版柊鐨勬爣绛鹃〉 + self.switch_window(-1) + # 鍦ㄦ柊鏍囩椤典腑鍔犺浇鎸囧畾url + self.driver.get(url) -- Gitblit v1.9.1