selenium-最简单的PO+关键字驱动

举报
清安无别事 发表于 2022/01/17 14:30:47 2022/01/17
【摘要】 ​         这里是清安,V:qing_an_an,本章直接教会你写一套简单且实际的自动化测试框架。内容不多,一看就会。        你可以在此基础上完善它,使他称为一套真正的框架。在项目中用起来。废话不多说,我们想创建一个新的项目文件,我的叫做frame_web_interface,为什么呢,后面还会有接口,不过不在这一频道,在接口的频道。项目文件下我创建了一个web_frame文...

 

        这里是清安,V:qing_an_an,本章直接教会你写一套简单且实际的自动化测试框架。内容不多,一看就会。

        你可以在此基础上完善它,使他称为一套真正的框架。在项目中用起来。

废话不多说,我们想创建一个新的项目文件,我的叫做frame_web_interface,为什么呢,后面还会有接口,不过不在这一频道,在接口的频道。

项目文件下我创建了一个web_frame文件,用于存放驱动以及一些点击,输入等方法。看代码:

# -->>>清安<<<---
from time import sleep
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

"""
    传入一个驱动参数,用于打开浏览器
    driver = getattr(webdriver,option_)()等于如下写法:
    driver = webdriver.Firefox()
"""
def webbrowser(option_):
    try:
        driver = getattr(webdriver,option_)()
    except Exception as e:
        print(e, '输入浏览器格式错误,使用默认浏览器')
        driver = webdriver.Firefox()
    return driver


class Webbrowser:

    """
    使用driver驱动,并传入打开所需要的浏览器参数
    Firefox,Chrome。。。
    """
    def __init__(self, option_):
        self.driver = webbrowser(option_)

    """
    打开
    driver.get('网址')
    """
    def open(self, url):
        self.driver.get(url)

    """
    关闭
    driver.quit()
    """
    def quit(self):
        self.driver.quit()

    """
    元素定位
    driver.find_element(By.ID,'su')
    """
    def loc_ele(self, ele, value):
        return self.driver.find_element(ele, value)

    """
    输入
    driver.find_element(By.ID,'su').send_keys(text)
    """
    def input(self, ele, value, text):
        self.loc_ele(ele, value).send_keys(text)

    """
    点击
    driver.find_element(By.ID,'su').click()
    """
    def click(self, ele, value):
        self.loc_ele(ele, value).click()

    """
    强制等待,根据导包而定
    time.sleep(num) or sleep(num)
    """
    def wait(self, num):
        sleep(num)

    """
    显示等待
    判断某个元素是否存在
        presence_of_element_located(find_element_by_id)
    """
    def wait_presence(self, num, ele, value):
        WebDriverWait(self.driver, num, 0.5).until(EC.presence_of_element_located((ele, value)))

        这里我写了很明确的注释,就不做多的解释了。这里存放的大致这么一些东西,如有需要可以自己进行增加所需要的方法。

        如果有疑问,下方评论留言,或者直接加博主吧。

        接下来我们看看用例部分,怎么写?

        我创建了一个casetest文件,把驱动也扔里面了,不扔里面,各位自己定义好驱动路径就行

# -->>>清安<<<---
from web_frame.browser import Webbrowser

# 实例化类。传入所需使用的驱动名称,注意大小写
wb = Webbrowser('Chrome')
# 打开地址
wb.open('https://baidu.com')
# 进入显示等待判断元素
wb.wait_presence(3, 'id', 'kw')
# 强制等待1秒
wb.wait(1)
# 定位元素,输入内容
wb.input('id', 'kw','清安无别事')
# 定位元素,点击百度一下搜索按钮
wb.click('id', 'su')
# 关闭
wb.quit()

       这里我是以百度为基准的。各位可以直接用于项目上去实践,结合数据驱动ddt,你已经可以开始自动化了。

        思路:

                这里各位可以自己写入框架,并输出报告。具体如何,前面的unittest见过,这里直接引入即可,你也可以使用pytest

                可以自行加入日志模块,日志模块也将在后续发布在python模块中。

        本章结。期待后续的Excel关键字驱动吧,可以大大减少工作量。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。