import pymysql from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webdriver.support.select import Select from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 定义工具类(基类,basepage,关键字驱动) class WebKeys: # 构造方法,用于接收driver数据 def __init__(self, driver): self.driver = driver # self.driver = webdriver.Firefox() self.wait = WebDriverWait(driver, 3) # 封装打开浏览器 def open(self, url): self.driver.get(url) # 界面元素高亮设置 def locator_station(self, ele): self.driver.execute_script( "arguments[0].setAttribute('style',arguments[1]);", ele, # 背景颜色红色;边框 2px 纯绿色 "background:red;border:2px solid green" ) # 元素定位 + 高亮突出 def locator(self, name, value): el = self.driver.find_element(name, value) self.locator_station(el) return el # 显示等待+元素定位+高亮突出 def locator_with_wait(self, name, value): locator = (name, value) self.wait.until(EC.visibility_of_element_located(locator)) # 元素定位 + 高亮突出 el = self.driver.find_element(name, value) self.locator_station(el) return el # 窗口切换 def change_window(self, n): # 切换到(获取全部句柄[n] -1代表最新页签) self.driver.switch_to.window(self.driver.window_handles[n]) # 打印窗口title print(self.driver.title) # 鼠标点击悬停,用于处理鼠标点击后变化的动态元素变化 def mouse_hold(self, url): btn = self.driver.find_element("xpath", url)[0] ActionChains(self.driver).click_and_hold(btn).perform() # 输入文本,先清空在直接回车 def clear_send_keys(self, name, value, txt): self.locator_with_wait(name, value).clear() self.locator_with_wait(name, value).send_keys(txt) # 选项索引 def select_by_index(self, n, name, value): # Select方法(定位元素).select通过index(输入变量n) Select(self.locator_with_wait(name, value)).select_by_index(n) # 选项值 def select_by_value(self, v, name, value): # Select方法(定位元素).select通过value(输入变量v) Select(self.locator_with_wait(name, value)).select_by_value(v) # 选项文本 def select_by_text(self, text, name, value): # Select方法(定位元素).select通过text(输入变量text) Select(self.locator_with_wait(name, value)).select_by_visible_text(text) # 按下键 def keyDown(self, key): ActionChains(self.driver).key_down(eval(f"Keys.{key}")).perform() # 松开键 def keyUp(self, key): ActionChains(self.driver).key_up(eval(f"Keys.{key}")).perform() # 显示等待+滚动+定位 def scroll_to_el(self, name, value): """ :param name: 元素定位的类型 :param value: 元素定位的路径 """ el = self.locator_with_wait(name, value) ActionChains(self.driver).scroll_to_element(el) # 切换到新页签 def new_tab(self, url): self.driver.switch_to.new_window('tab') self.driver.get(url) # 切换到新窗口 def new_window(self, url): self.driver.switch_to.new_window('window') self.driver.get(url) # 显等+元素文本获取 def text_wait(self, name, value, text): el = (name, value) res = self.wait.until(EC.text_to_be_present_in_element(el, text)) return res # 数据库检查 def SqlCheck(self,SQL, n): # 01创建sql连接 conn = pymysql.connect( host='xxx.xx.xxx.xxx', port=3306, user='xxxxxxx', passwd='xxxxxx', database='xxxxxx', charset='utf8' ) # 02创建游标 cmd = conn.cursor() # 03准备执行SQL语句 cmd.execute(query=SQL) # 获取查询信息 results = cmd.fetchmany(n) # 关闭数据库连接 conn.close() return results
关键字驱动封装模板
于 2023-08-06 15:25:36 首次发布