关键字驱动封装模板

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值