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

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

本篇记录5个问题:

问题1:如何激活pycharm

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

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

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

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

 

问题1:如何激活pycharm:

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

    解决方法:找攻略

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

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

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

    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()

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值