python3--selenium--unittest。长时间未使用,编写UI

系统 1578 0

前言:自动化测试存在比较多的使用限制,会存在某段时间无法使用的生疏期。通过这篇文章记录项目编写程序中遇到的问题以及解决思路,希望对以后的自动化开发能有些帮助。

本篇记录5个问题:

问题1:如何激活pycharm

问题2. 搭建selenium + unittest开发环境

问题3:显示等待、隐式等待理解错误

问题4:格式化字符串方法

问题5:某一步页面无法响应,如何保证自动化程序能够继续运行,不受报错影响

 

问题1:如何激活pycharm:

    网上找的攻略,想在已经激活了,但是忘了具体用的是那个版本的了,以后搭建环境的时候,再补充。

    解决方法:找攻略

问题2. 搭建selenium + unittest开发环境:

    解决方法:pycharm--file--setting--Project:Progrem--Project Interpreter

导入selenium包:创建成功后,再列表中会显示selenium。这样操作的只对你当前开发的包可用,每次新创建一个包,就需要重新引用下。

python3--selenium--unittest。长时间未使用,编写UI自动化遇到的问题以及解决方法【问题1-5】_第1张图片

    unittest是python中内置的框架,不需要导包,直接在需要使用的文件中,import unittest就可以了。至于unittest框架里有哪些内容,如何使用,网上有很多详细的说明,笔者自己还记得,就不细说了,如果使用中遇到什么问题,可以在评论中讨论。笔者看到一定会给出自己的理解建议。

问题3:显示等待、隐式等待理解错误:

    解决方法:显示等待是在定位页面某个元素,这个元素没取到,就等待;取到了,就完成操作进入下一步;在配置的等待时间内还没渠道,则会抛出异常。隐式等待,等待的是整个页面完成加载。

显示等待效率要高于隐式等待。

显示等待的添加方法:

            
              from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
            
          

driver = webdriver.Firefox()

driver.get("http://somedomain/url_that_delays_loading")

            
              el = WebDriverWait(cls.driver, 10).until(EC.presence_of_element_located('class', 'test'))
            
          

问题4:格式化字符串方法:

        解决方法:python字符串格式化有两种:

1.  使用%   例如: 

            
'//*[@id="instances"]/tbody/tr[%s]/td[2]/b' % count
          

2. 使用.format   例如:

            
"{Key}:{url} 环境未启动".format(Key = Key, url = Value[0])
          

format方法可以通过位数来定位、也可以通过代码值进行对应 例如:print("{0:2d}{1:.3f}{site}".format(200, 3.1415, site = "gg"))

也可以直接进行转化: !a  转化为:ascii      !s 转化为:str     !r   转化为:repr

问题5:某一步页面无法响应,如何保证自动化程序能够继续运行,不受报错影响

        解决方法:引入异常处理:try     except     else     finally

1. 首先需要知道哪一步操作会出现error。 将这一步写入到try中

2. 然后确认error内容。except  中记录这个error类型、同时需要在文件中引入error类型

3. 最后进行异常处理。出现异常之后系统进行什么操作,保证能够继续运行。可以是数据处理或者下一步操作等

            
from selenium.common.exceptions import InvalidArgumentException   # 运入报错error类型

try:   # 将可能发生错误内容,写入try中
    uihandle.get(Value[0])
    sleep(2)
    # 获取登陆页面的Title信息
    Server_Title = driver.title
    # 获取的Title与config中的title比较,如果不同,则说明页面没启动
    if Server_Title == Value[1]:
        # print("{Key}:{url} 已经启动".format(Key = Key, url = Value[0]))
        self.TestReport['Total_Success'] += 1
    else:
        print('*' * 50)
        print("{Key}:{url} 环境未启动".format(Key=Key, url=Value[0]))
        self.TestReport['Total_Failures'] += 1
        self.TestReport["Error_Report"].append("""{Key}:{url}
                        该地址未完成启动
                        """.format(Key=Key, url=Value[0]))

except InvalidArgumentException: # 填写error类型,系统捕捉到错误后不再停止,而是执行except中的程序
    self.TestReport["Error_Report"].append("""{Key}:{url}
    该地址无法访问
    """.format(Key=Key, url=Value[0]))
    self.TestReport['Total_Failures'] += 1
finally:   # 执行完try、except后,最后两者都需要执行的内容,写入finally
    driver.quit()
          

 

 

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论