selenium自动化及三种等待方式

探讨Selenium自动化测试的维护成本与代码稳定性问题,分析PageObject模式的重要性,及如何应对web开发变化带来的挑战。文章深入讲解Selenium中三种等待机制的使用场景与技巧,提供代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上发现一博客对selenium各种等待的总结。末了,他说:

UI自动化的弊端
1.维护成本大(产量不高)
    a.代码没做任何的解耦
    b.没有框架的思想,纯粹在堆代码(pageobject)
        根据项目的每个页面,抽象出类,每个功能点抽象出这个类的函数
    c.web开发会变更html接口,或进行修改
        css_selector的定位方式,尽量减轻层级定位的使用次数
2.代码爱报错
    WebDriverWait每隔几秒钟扫描一次,如果超时了,则报timeout的错误
    css_selector的定位方式,尽量减轻层级定位的使用次数

我也深有同感。让做开发的又转行做测试,写测试代码。虽然很容易上手,但味同嚼蜡。纵观全项目,没有任何逻辑性,只是找元素,输入内容,操作,断言。全部都是如此,纯粹堆代码。很乏味,很无聊。但是看到自己写完之后,以前手工反复做的事情,现在运行代码后就能自动完成,反复运行,代替了手工点点点,还有挺欣慰的。

不管怎么说,先完全掌握再来讨论是否喜欢。

selenium中的等待有三种。见代码:

class BoxDriver:
    def __init__(self,browser_type,url):
        if browser_type == "Chrome":
            driver = webdriver.Chrome()
        elif browser_type == "Firefox":
            driver = webdriver.Firefox()
        else:
            driver = webdriver.Ie()
        try:
            self._base_driver = driver
        except:
            raise NameError("请输入 一个浏览器")
        #隐式等待
        driver.implicitly_wait(10)
        driver.maximize_window()
        driver.get(url)
        sleep(2)

    def implicitly_wait(self,second):
        '''
        隐式等待,针对此浏览器的每一个元素。
        如果找不到,则等待几秒再找
        :param second:
        :return:
        '''
        self._base_driver.implicitly_wait(second)

    def wait(self,second):
        '''
        固定等待
        :param second:
        :return:
        '''
        sleep(second)

    def webdriver_wait(self,selector):
        '''
        每隔0.5秒尝试定位一次,最多定位10次。
        如果还是找不到,则报错
        :param selector:
        :return:
        '''
        locator = self._convert_selector_tolocator(selector)
        WebDriverWait(self._base_driver,10,0.5).until(
            EC.presence_of_element_located(locator)
        )

以下链接似乎更详细,有兴趣再移步继续学习。

https://www.cnblogs.com/wxcx/p/8948280.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值