Python3实现简单的selenium自动化测试

Selenium 3.0 + Python自动化测试框架的使用 本文以Python语言为例,主要系统介绍Selenium3.0自动化测试框架的使用中的各种基础、常规操作。 通过学习和实践,达到能够在Python + Selenium的技术架构下进行Web自动化入门测试的目的。 阅读详情

本文参考OSChina的博主‘磁针石’的《使用Python学习selenium测试工具》,该文章中有些代码执行起来有些问题,在这篇文章中已经调通。另外,本文只是简单整理了下python实现selenium的一个简单流程,要了解更多selenium相关可以参考‘磁针石’的那篇文章。

前置环境

1. 安装selenium

2. 先来一个简单的搜索功能练练手

  • Demo 1
# searchtests.py

#!/user/bin/env python
#encoding: utf-8

import unittest
from selenium import webdriver
 
class SearchTests(unittest.TestCase):
    def setUp(self):
        #create a new Firefox session
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.driver.maximize_window()
         
        # navigate to the application home Page
        self.driver.get("http://www.jd.com/")
      
    def test_search_by_category(self):
        #keywords
        self.search_field = self.driver.find_element_by_id("key")
        self.search_field.clear()
        self.search_field.send_keys("phones")
         
        #go search
        self.search_btn = self.driver.find_element_by_xpath("//button[@clstag='h|keycount|2015|03c']")
        self.search_btn.click()
         
        #获取页面所有商品的 <a>标签ַ
        products = self.driver.find_elements_by_xpath("//div[@class='p-img']/a")
        self.assertGreater(len(products), 3, "more than 3~~")
         
         
    def test_search_by_name(self):
        #输入搜索关键字
        self.search_field = self.driver.find_element_by_id("key")
        self.search_field.clear()
        self.search_field.send_keys("phones")
         
        #go search
        self.search_btn = self.driver.find_element_by_xpath("//button[@clstag='h|keycount|2015|03c']")
        self.search_btn.click()
         
        products = self.driver.find_elements_by_xpath("//div[@class='p-img']/a")
        self.assertGreater(len(products), 4, "more than 4~~")
         
    def tearDown(self):
        # close
        self.driver.quit()
         
if __name__ == '__main__':
    unittest.main(verbosity=2)
  • Demo 2
# searchtests.py

#!/user/bin/env python
#encoding: utf-8

import unittest
from selenium import webdriver 

class SearchTests(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        # 基于类的setUp()和tearDown()方法
        # 这里的‘@classmethod’支持在一个类中只进行一次初始化和清理
        cls.driver = webdriver.Firefox()
        cls.driver.implicitly_wait(30)
        cls.driver.maximize_window()

        # navigate to the application home page
        cls.driver.get("http://www.jd.com/")
        
    def test_search_by_category(self):
        # get the search textbox
        self.search_field = self.driver.find_element_by_id("key")
        self.search_field.clear()
        self.search_field.send_keys("phones")

        #submit
        self.search_btn = self.driver.find_element_by_xpath("//button[@clstag='h|keycount|2015|03c']")
        self.search_btn.click()
        
        # get all the anchor elements which have product names displayed
        # currently on result page using find_elements_by_xpath method
        products = self.driver.find_elements_by_xpath("//div[@class='p-img']/a")
        self.assertGreater(len(products), 3, "more than 3~~")

    def test_search_by_name(self):
        # get the search textbox
        self.search_field = self.driver.find_element_by_id("key")
        self.search_field.clear()
        self.search_field.send_keys("android")
        
        #submit
        self.search_btn = self.driver.find_element_by_xpath("//button[@clstag='shangpin|keycount|toplist1|b03']")
        self.search_btn.click()


        # get all the anchor elements which have product names displayed
        # currently on result page using find_elements_by_xpath method
        products = self.driver.find_elements_by_xpath("//div[@class='p-img']/a")
        self.assertGreater(len(products), 4, "more than 4~~")

    @classmethod
    def tearDownClass(cls):
        # close the browser window
        cls.driver.quit()
        
if __name__ == '__main__':
    unittest.main(verbosity=2) 
  • Demo 1和Demo 2对比,可以发现,Demo 2不需要每次都初始化浏览器
  • 另外一点,需要学习find_element_by_xpath的规则以及web的DOM结构

3. 另一个测试用例

# homepagetests.py

#!/user/bin/env python
#encoding: utf-8

import unittest
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
#from __builtin__ import classmethod

class HomePageTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        # create a new Firefox session """
        cls.driver = webdriver.Firefox()
        cls.driver.implicitly_wait(30)
        cls.driver.maximize_window()

        # navigate to the application home page """
        cls.driver.get('http://www.jd.com/')

    def test_search_field(self):
        # check search field exists on Home page
        self.assertTrue(self.is_element_present(By.ID, 'key'))

#     def test_language_option(self):
#         # check language options dropdown on Home page
#         self.assertTrue(self.is_element_present(By.ID, 'select-language'))
# 
#     def test_shopping_cart_empty_message(self):
#         # check content of My Shopping Cart block on Home page
#         shopping_cart_icon = self.driver.find_element_by_css_selector('div.header-minicart span.icon')
#         shopping_cart_icon.click()
# 
#         shopping_cart_status = self.driver.find_element_by_css_selector('p.empty').text
#         self.assertEqual('You have no items in your shopping cart.',
#                           shopping_cart_status)
# 
#         close_button = self.driver.find_element_by_css_selector('div.minicart-wrapper a.close')
#         close_button.click()

    @classmethod
    def tearDownClass(cls):
        # close the browser window
        cls.driver.quit()

    def is_element_present(self, how, what):
        """
        Utility method to check presence of an element on page
        :params how: By locator type
        :params what: locator value
        """
        try:
            self.driver.find_element(by=how, value=what)
        except NoSuchElementException:
            return False
        return True

if __name__ == '__main__':
    unittest.main(verbosity=2)

4. 组合测试

# smoketests.py

#!/user/bin/env python
#encoding: utf-8


import unittest
from searchtests import SearchTests
from homepagetests import HomePageTest

# get all tests from SearchProductTest and HomePageTest class
search_tests = unittest.TestLoader().loadTestsFromTestCase(SearchTests)
home_page_tests = unittest.TestLoader().loadTestsFromTestCase(HomePageTest)

# create a test suite combining search_test and home_page_test
smoke_tests = unittest.TestSuite([home_page_tests, search_tests])

# run the suite
unittest.TextTestRunner(verbosity=2).run(smoke_tests)

5. 输出测试报告

  • 这里需要引入HTMLTestRunner.py文件
  • 下载地址:HTMLTestRunner.py
  • 这个文件用python2写的,有很多地方会有编译错误,具体怎么修改,>>戳这里<<
  • 修改后的HTMLTestRunner.py参考前面给的源码
# smoketests_with_html_report.py

#!/user/bin/env python
#encoding: utf-8


import unittest
import HTMLTestRunner
import os
from searchtests import SearchTests
from homepagetests import HomePageTest

# get the directory path to output report file
result_dir = os.getcwd()

# get all tests from SearchProductTest and HomePageTest class
search_tests = unittest.TestLoader().loadTestsFromTestCase(SearchTests)
home_page_tests = unittest.TestLoader().loadTestsFromTestCase(HomePageTest)

# create a test suite combining search_test and home_page_test
smoke_tests = unittest.TestSuite([home_page_tests, search_tests])

# open the report file
outfile = open(result_dir + '\SmokeTestReport.html', 'w')

# configure HTMLTestRunner options
runner = HTMLTestRunner.HTMLTestRunner(stream=outfile,
                                       title='Test Report',
                                       description='Smoke Tests')

# run the suite using HTMLTestRunner
runner.run(smoke_tests)
  • 测试结果
    HTMLTestReport
Python Selenium实现自动化测试及Chrome驱动使用 在软件开发过程中,自动化测试是一个至关重要的环节,可以有效地提高测试效率、减少人工测试成本,并且能够在短时间内发现潜在的问题。而Python中的Selenium库则是一个强大的自动化测试工具,可以模拟用户在浏览器中的操作,从而实现自动化测试的功能。本文将介绍如何使用Python Selenium库来实现自动化测试,并详细讲解Chrome驱动的使用方法。 阅读详情

相关推荐

python3+selenium自动化测试框架详解

在本篇文章里小编给大家分享了关于python3+selenium自动化测试框架的相关知识点内容,有兴趣的朋友们学习下。 背景 为了更好的发展自身的测试技能,应对测试行业以及互联网行业的迭代变化。自学python以及自动化测试。 虽然在2017年已经开始接触了selenium,期间是断断续续执行自动化测试,因为还有其他测试任务,培训任务要执行… 前期建议大家能够学习python基本语法(python...

python3基础教程 3858

Python3的selenium库常用方法总结

Selenium-WEB自动化工具简介:Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器:IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。测试与浏览器的兼容性—支持多种平台和多种浏览器,测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能—创建回归测试检验软件功能和用户需求。

墨痕诉清风的博客 1932

2019 Selenium3与Python3实战开发Web自动化测试框架(三)

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.youkuaiyun.com/qq_41782425/article/details/94577854 目录 七丶行为驱动的介绍 八丶日志模块的使用 九丶持续集成 十丶GitHub的介绍及使用 七丶行为驱动的介绍 1.行为驱动介绍及环境搭建 什么是行为驱动?也就是BDD...

cdtaogang's blog 2万+

Python Selenium3框架详解

自从17年开始就不再怎么关注UI自动化测试了,也就很少关注Selenium的知识体系,在当时的背景和环境下有很多的思考和选择点,基于UI的自动化测试并不是所有的场合下都使用它合适,任何一个技术,要把它应用在合适的场景下才能够显示出它的最大的价值。今天这里就简单的对Page Objects做一个介绍。 基于UI的自动化测试的痛点在于如何可以高效的维护并且满足业务迭代的需求,或者说这是...

python学习者的博客 1665

每日一书,《Selenium3自动化测试实战—基于Python语言》PDF

《Selenium3自动化测试实战——基于Python语言》重要知识点总结如下: 《Selenium3自动化测试实战—基于Python语言》 (1) Python3 编程语言基础精讲 (2) 通过20个例子展示WebDriver API 的使用场景 (3) unittest & pytest 两大单元测试框架全面介绍 (4) 数据驱动模型在项目中的应用 (5) 通过自动化项目串联所有知识点 (6) Jenkins持续集成的安装与配置 (7) appium 移动测试工具的应用 ...

程序员白楠楠的博客 3294

MTK平台高效部署Qwen2.5大模型:从转换到推理全流程解析

本文详细解析了在联发科(MTK)NeuroPilot平台上高效部署Qwen2.5大模型的全流程。内容涵盖从环境搭建、模型转换、量化优化到编译部署与上机推理的完整步骤,重点分享了模型转换与模型运行的关键实践与避坑指南,旨在帮助开发者将大语言模型成功集成至移动及边缘设备。

zeta9的博客 377

Python3+Selenium框架搭建

Webdriver (Selenium2)是一种用于Web应用程序的自动测试工具,

软件自动化测试技术交流、资源分享 1637

Revit获取族预览图

最近做到和族库相关的功能需要获取到族文件的预览图,在RevitAPI中提供了ElementType.GetPreviewImage方法,但是前提就是你是在Revit里面操作的,并且已经拿到了Symbol对象实例,才可以调用此方法。然后在网上找了另外一种方式,通过读取Revit文件,在REVITPREVIEW4.0字段截取文件信息,将其转换为图片格式。 一、使用RevitAPI中ElementType.GetPreviewImage方法 [Autodesk.Revit.Attributes.Transac.

weixin_44631419的博客 1757

功能测试做久了没意思?看这里!!!自动化测试 你值得拥有!!!!

自动化测试是什么? 自动化测试简单来说就是借助工具的方式来辅助手动测试的行为就可以看做是自动化测试。 自动化测试工具有哪些? 现在常用的自动化测试工具包括: QTP:主要用于回归测试和测试同一软件的新版本 Robot Framework:这是一个基于python编写的功能自动化测试框架,也是很多企业都在用的一款框架,它具有很好的可扩展性 Selenium:这是一款开源的框架,由于它支持多平台,多浏览器,多语言(Java,Python,Ruby,PHP,JS等),使得它在众多测试工具中突破,也是目

测试小小小的博客 592

langchain入门学习笔记

langchain快速入门

1732

【记录】Python3|Selenium4 极速上手入门(Windows)

方便自己重装电脑时重新装 Selenium,懒得每次都重新找链接。

shandianchengzi的博客 2397

海康视觉脚本开发全流程解析

本文详细解析了海康机器视觉平台(VM)中脚本模块的开发全流程。从创建第一个脚本模块入手,深入讲解了输入参数、输出参数与内部变量的定义与区别,并提供了C#脚本编写、公用函数调用、代码结构组织以及编译调试的实用指南。旨在帮助开发者掌握海康视觉脚本开发的核心技巧,高效实现复杂的自定义视觉逻辑处理。

beer8的博客 602

Pycharm+Python3.7+selenium+Firefox(火狐) 环境配置,实现简单自动化测试脚本

一、安装Pycharn,使用python3.7配置Python环境 下载pycharm和python,按照压缩包里的《Python和Pycharm软件社区版安装说明》进行软件安装和环境配置 资源链接(百度云):https://pan.baidu.com/s/1GT5MDMeUG2HMN4PM83LMxw 提取码:2h16 二、安装selenium 1、第一种方式 Win+R,输出cmd,再出现的...

qq_43642864的博客 2367

彻底清理Easy Connect残留:从服务到驱动的完整卸载指南

在企业网络接入场景中,远程客户端常因内核驱动、系统服务和网络过滤组件导致卸载残留,进程无法结束、文件被锁定、注册表项顽固存在。其原理在于驱动挂载网络协议栈,服务守护进程,卸载时资源占用导致清理不彻底。彻底清理的技术价值在于恢复系统纯净、避免网络异常和软件冲突。典型应用场景包括企业办公机、个人笔记本更换或重装客户端。本文针对深信服Easy Connect,提供从停止服务、删除驱动到清理注册表和虚拟网卡的分步操作链路,并给出验证方法和避坑经验。

weixin_31292729的博客 242

iOS远程真机之ios-minicap安装使用完全指南

minicap 是开源项目 STF 中的高速截图工具。STF利用此工具不断的传输图片信息并在web端绘制实现 以前只有Android版本,最近有新的ios版本,现在就安装过程中遇到的一些问题进行分享(ps:感谢sorccu 在issue里面给我的指点) 首先上地址:https://github.com/openstf/ios-minicap 你可以git clone或者直接下载zip包。

甫式人生 1万+

python selenium_使用Python+selenium实现第一个自动化测试脚本

原作者:未知的向往原出处:优快云原文链接:https://blog.youkuaiyun.com/nanalinlinlin/article/details/54692114版权声明:本文为博主原创文章,转载请附上博文链接python3.6+selenium3.0环境:windows10,64位一、安装pythonpython官方下载地址:https://www.python.org/downloads/进...

weixin_39810196的博客 124

Android16 rk3576添加触摸点数上限到40个点

本文介绍了在Android 16系统上实现40点触摸支持的修改方案。相比Android 15,Android 16对API添加有更严格的要求,需要在MotionEvent.java中添加@FlaggedApi批注。主要修改包括:1)在input_framework.aconfig中定义flag;2)在MotionEvent.java中添加40个AXIS_GENERIC轴常量并添加批注;3)将32位指针ID处理改为64位适配;4)更新相关API文档。修改涉及多个核心文件,包括PointerController

tzj1058756809的博客 382

使用Python+selenium实现第一个自动化测试脚本

保存为test1.py,通过快捷键F5运行脚本,可看到脚本启动Firefox浏览器进入百度页,输入“selenium” 点击搜索按钮,最后关闭浏览器的过程。第一个脚本即完成了~​勾上第一个选项,选择安装路径后(注意安装路径不要包含中文,否则后面安装工具可能会报错),点击install就开始安装了。​安装完成,点击close,python安装完毕~ 前面已勾选了add path,所以无需设置任何系统变量,即可使用。​点选Python3.6.0版本,进入3.6版本页面,拉到页面下方,找到files。

2301_78843735的博客 194

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

自动化测试之Python + selenium = Web UI自动化测试

1.1 Python的运行环境 在我决定学习一门新语言Python的时候,Python3已经出来了,虽然目前是Python2与Python3同步维护,Python2拥有大量的类库。 但是随着时间的发展,Python3才是以后发展的主流,所以在这里我选择的版本是Python3。 安装Python:Python官方网站:https://www.Python.org/ 进入之后选择对应的版本进行...

weixin_30466421的博客 93

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

python selenium 不弹出浏览器

python selenium 不弹出浏览器 自动化测试弹出浏览器可以清晰的看到操作步骤,和执行页面,领导也喜欢看,并不适合所有场景,比如:自动sign。。。哇哈哈。。。 开发环境: python3.7 windows 10 64位 pycharm2019 3.3 举个实现原理的简单例子。 # -*- coding: utf-8 -*- from selenium import webdriver if __name__ == '__main__': option = webdriver.

码上有肉的博客 8918

Python selenium —— selenium与自动化测试成神之路

忽然想谈谈自动化的学习路径,因为发现很多人总是急于求成,不懂该如何学习。在群里总是会遇到很多人问低级问题,写了一个selenium脚本,却执行失败,跑到群里来问,大神,这里为什么会报错?很多都是明显的语法问题,一问方知,今天刚刚学selenium,之前也没有语法基础,没学过Java,没学过Python,就跑来搞selenium,想玩自动化。每当看到这样的同学,总是很想吐槽。今天博主也不是想要吐槽,只

灰蓝 13万+

Python+Selenium简单实现Web自动化测试

这篇文章是入门级别的应用Python + Selenium进行自动化测试,包括环境搭建及简单的实例。基本思想是用Firefox Selenium IDE插件录制脚本并生成Python代码,用Python结合Selenium及浏览器驱动程序执行脚本。操作系统是Windows,过程中有不明白的地方记得百度下,比如不知道如何打开Windows CMD命令行、不知道如何设置环境变量等,因为本文的前提是读者已有一定的基础知识。 安装Python,访问其官网www.python.org下载最新版本,建议选择Pytho.

人生不怕起点低,就怕没追求 2353

Python结合Selenium简单实现Web自动化测试

接下来还要下载一些浏览器驱动程序(webdriver),注意Firefox是Selenium原生支持的,但似乎并不是所有Firefox版本都支持,所以我们要找一些驱动,另外目前看起来似乎Firefox在执行时并不稳定,而谷歌的Chrome浏览器比较好一点,所以我们这里选择Chrome。8,如果前面步骤都正确的话,这时会自动打开浏览器,打开百度进行搜索。上图中标记的两个分别用于Firefox和Chrome,下载后保存,添加到环境变量,为了方便起见,建议可以直接放到之前安装Python的目录下。

chengxuyuznguoke的博客 1162

基于Selenium和python的UI自动化测试方案

Selenium是一个流行的自动化测试框架,用于测试Web应用程序的用户界面。它提供了一组功能强大的工具和库,允许开发人员使用多种编程语言(如Java、Python、C#、JavaScript等)编写自动化测试脚本。Selenium可以模拟用户在浏览器中的交互行为,例如点击按钮、输入文本、选择下拉菜单等。它支持各种浏览器,包括Chrome、Firefox、Safari等,并且可以在不同的操作系统上运行。Selenium WebDriver:用于控制浏览器并执行测试操作的API。

weixin_67553250的博客 1208
上一篇: python selenium环境搭建笔记
下一篇: python3运行selenium下HTMLTestRunner报错
monkey7777
博客等级 码龄15年 55粉丝 104原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值