当前位置: 首页>数据库>正文

Selenium+Pythonweb端自动化

一、Selenium 简介

1、Selenium:是一个Web应用程序测试的工具,支持多平台、多浏览器、多语言去实现自动化测试。目前在Web自动化领域应用越来越广泛
2、Selemium工作原理:Selenium 主要用于Web端应用程序的自动化测试
3、Selenium 的特点:

  • 开源、免费
  • 多浏览器支持:FireFox、Chrome、IE
  • 多语言支持:Java、Python、Ruby、JavaScript、C++
  • 对Web页面有良好的支持
  • 简单、灵活
  • 支持分布式测试用例执行

二、环境配置

1、下载软件Pycharm

下载地址:https://www.jetbrains.com/pycharm/download/

2、安装Python环境

参考文档:https://www.jianshu.com/p/54baeae912fc

查看pyhoth环境所在的位置:which python3.7

3、安装pip

命令行: sudo easy_install pip

4、下载浏览器的驱动

参考文档: https://www.jianshu.com/p/18d2a36f5a33

Chrome的驱动对照表 (驱动版本和浏览器版本必须对应)

驱动放在python所在的bin文件下:open /usr/local/bin


Selenium+Pythonweb端自动化,第1张
Chrome的驱动对照表.png

5、安装所需要的库或者SDK
方式一: pip install selenium
方式二:直接在pycharm-Project Interpreter里面进行安装


Selenium+Pythonweb端自动化,第2张
方式一.png

Selenium+Pythonweb端自动化,第3张
方式二.png

三、Unittest 框架

1、简介:Python语言下的单元测试框架,是Python语言自带的单元测试框架
2、unittest中的4个重要概念:

  • TestCase:一个TestCase的实例就是一个测试用例;测试用例流程:包含测试前准备环境的搭建 setUp, 实现测试过程的代码run, 以及测试后环境的还原tearDown.
  • Test Sutie: Test Suite用来组装单个测试用例。可以通过addTest加载到TestCase到TestSuite中,从而返回一个TestSuite实例
  • Test Runner: 通过TextTestRunner 类提供的run()方法来执行 test sutie/test case.
  • Test Fixure:对一个测试用例环境的搭建和销毁,这个测试用例中需要访问数据库,可以在setUp()中通过建立数据库连接来进行初始化,在tearDown()中清除数据库产生的数据,然后关闭连接等。tearDown的过程很重要,要为下一个test case留下一个干净的环境
class baseUnit(unittest.TestCase):

    @classmethod
    def setUpClass(cls) -> None:
        cls.driver = webdriver.Chrome('/usr/local/bin/chromedriver')
        cls.driver.maximize_window()
        cls.driver.implicitly_wait(10)
        cls.base_url = "https://XX.XX.com/login"
        cls.driver.title

    @classmethod
    def tearDownClass(cls) -> None:
        cls.driver.quit()

四、元素定位的方法

1、 http://note.youdao.com/s/TKEqaFcu

1、id定位: driver.find_element_by_id("txtUaserName").send_keys("容音@lily")
2、name定位:driver.find_element_by_name("username").send_keys("容音@lily")
3、class定位:driver.find_element_by_class_name("")
4、tag定位:driver.find_element_by_tag_name("input")
5、link定位: driver.find_element_by_link_text("忘记密码").click()
6、XPath定位:driver.find_element_by_xpath(“/html/body/div/div[2]/div[1]/div[3]/div/button").click()

五、测试用例执行顺序和执行方法

1、测试用例执行顺序:
unittest框架默认根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A~Z,a~z; 所以TestAdd类会优先于TestBdd类执行,test_aaa()方法会优先于test_ccc()被执行,因而它并没有按照用例从上到下执行
2、测试用例的执行:
unittest提供了可以共享的defaulTestLoader类,可以使用其子类和方法创建实例,discover()方法就是其中之一。

test_dir = '/Users/XX/Desktop/Study/ui_test_admin/test_case'
discover = unittest.defaultTestLoader.discover(test_dir, pattern=‘test*.py')
if __name == ‘__main__’:
      runner = unittest.TextTestRunner()
      runner.run(discover)

test_dir: 要测试的模块名或测试用例目录
pattern:是用例的文件名

六、HTML TestRunner 生成测试报告

1、HTMLTestRunner 是Python标准库 unitest单元测试框架的一个扩展,它生成易于使用的HTML测试报告

if __name__ == '__main__':
    #按照一定格式获取当前时间
    now = time.strftime("%Y-%m-%d %H-%M-%S")
    filename = now+'result.html'
    通过open()方法以二进制写模式打开当前目录下的result.html,如果没有,则自动创建该文件。
    fp = open(filename, 'wb')
    #定义测试报告:stream指定测试报告文件, title用于定义测试报告的标题,description用于         定义测试报告的副标题。
    runner = HTMLTestRunner(stream=fp, verbosity=2, title='Admin报告', description='用例执行情况:')
    # 运行项目组装的用例
    runner.run(discover)
    # 关闭报告文件
    fp.close()

2、用例成功的测试报告


Selenium+Pythonweb端自动化,第4张
用例成功.png

3、用例失败的测试报告


Selenium+Pythonweb端自动化,第5张
用例失败.png

七、用例截图

def insert_img(driver, file_name):
    pfilename = "/Users/XX/Desktop/Study/ui_test_admin/images"
    file_path = pfilename + "/" + file_name
    if Path(pfilename).is_dir():
        pass
    else:
        Path(pfilename).mkdir()
    driver.get_screenshot_as_file(file_path)
if __name__ == '__main__':
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")
    insert_img(driver, '../images/admin.png')
    driver.quit()

八、测试报告通过邮件发送

1、SMTP是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式
2、Python的smtplib 模块提供了一种很方便的途径用来发送电子邮件。可以使用SMTP对象的sendmail方法发送邮件
3、发送邮件

smtp = smtplib.SMTP_SSL(mailserver, port=465)  # 非QQ邮箱,一般使用SMTP即可,不需要有SSL
    smtp.login(userName_SendMail, userName_AuthoCode)
    smtp.sendmail(userName_SendMail, received_mail, msg.as_string())
    smtp.quit()
    send_email(new_report_addr)
Selenium+Pythonweb端自动化,第6张
邮件里面的测试报告.png

九、jenkins部署

1、 安装三个插件:Startup Trigger、Groovy、HTML Publisher
2、项目-Configure- Build进行配置


Selenium+Pythonweb端自动化,第7张
3951676368657_.pic.jpg

3、生成一个HTML Report


Selenium+Pythonweb端自动化,第8张

Selenium+Pythonweb端自动化,第9张

https://www.xamrdz.com/database/67t1996399.html

相关文章: