精华内容
下载资源
问答
  • seleni1.0到3.0的变化

    2019-03-25 13:15:04
    RC Client -jar,一系列jar包,主要用来写测试用例 RC core -javascript ,由RC Server注入到浏览器的selenium 内核主要操作控件 这里RC的核心技术是调用JS注入到浏览器中,注入JS到浏览器中,会遇到一个同源问题,...

    selenium 1.0 RC几个核心组成部分:

    RC Server - jar ,主要负责跟浏览器打交道

    RC Client -jar,一系列jar包,主要用来写测试用例

    RC core -javascript ,由RC Server注入到浏览器的selenium

    内核主要操作控件

    这里RC的核心技术是调用JS注入到浏览器中,注入JS到浏览器中,会遇到一个同源问题,同源问题是浏览器的一个安全机制。这里谈到同源问题,指的是同样的URI的域名、协议和端口必须是一样的,才允许JS访问。否则,不允许JS跨域访问,例如如以下三种情况,是不允tt许访问:

    不同域名:

    http://www.abc.com

    http://www.xyz.com

    不同端口:
    http://www.abc:8080

    http://www.abc:8070

    不同协议:
    http://www.abc.com

    https://www.abc.com

    selenium 2.0 webdrive:

    1、下载浏览器对应的webdriverserver.exe

    2、启动webdriverserver.exe完成交易

    3、 调用API完成交互

    就目前来说,1.0和2.0区别很大:1.0调用的是JS,2.0启动的是浏览器,调用的是原生的api。

    selenium 3.0相对于selenium 2.0区别不大,selenium支持更多东西,支持浏览器Edge,彻底废弃了selenium RC,支持JAVA最低版本是JAVA 8.0

    展开全文
  • HTMLTestrunner自动化测试生成报告兼容python3, 把该脚本直接放在python的Lib目录下
  • WebUI 自动化测试利器 - selenium

    千次阅读 2015-09-30 08:34:37
    1.什么是selenium Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,本系列现在主要包括以下4款: 1.Selenium Core:支持DHTML的测试案例(效果类似数据驱动测试),它是Selenium IDE和...3.Seleni

    1.什么是selenium

    Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,本系列现在主要包括以下4款:

    1.Selenium Core:支持DHTML的测试案例(效果类似数据驱动测试),它是Selenium  IDE和Selenium  RC的引擎。

    2.Selenium IDE:FireFox的一个插件,支持脚本录制。

    3.Selenium RC:Selenium Remote Control。后续的系列文章我会主要针对Selenium RC展开介绍。

    4.Selenium Grid:允许同时并行地、在不同的环境上运行多个测试任务,极大地加快Web应用的功能测试。

    2.如何选择

     Selenium IDESelenium Remote ControlSelenium CoreSelenium Core HTA
    浏览器支持仅Firefox很多所有仅IE
    需要远程安装
    支持 HTTPS/SSL是*
    支持跨域是*
    需要Java
    将测试结果保存到磁盘
    多语言支持仅Selenese很多仅Selenese仅Selenese
    这里没有介绍Selenium Grid,但介绍了另外一个Selenium Core HTA,Selenium Core HTA其实是Selenium Core的额外模式,你只要Selenium Core配置稍加修改,即为HTA模式,Selenium Core HTA可以在IE最高安全等级(特权)下工作,这意味着它仅能在IE下工作,由于限制较大,下面将排除对Selenium Core HTA的讨论。

    1.浏览器支持:
    (1).Selenium IDE仅可以在Firefox中工作。
    (2).Selenium Remote Control支持很多浏览器,包括最常用的:firefox,ie,safari等N款浏览器。
    (3).Selenium Core支持的浏览器是最广的,这点和它的实现有关。作为IDE和RC的引擎,Selenium Core几乎可以在任何浏览器中工作。
    2.需要远程安装:是否需要在被测网站的服务端安装?
    这里只有Selenium Core需要,这是出于同源策略的原因。这也是Selenium Core一个很大的限制,试问,如果你要测试Google.com,还得在google的服务器上装一个Selenium Core,那是多搞笑的一件事。而Selenium IDE和Selenium Core HTA不会被同源策略所限制,因为他们对浏览器扩展了。
    Selenium RC提供一个代码服务器来保证Selenium JS文件看似来自相同的远程服务器,从而符合同源策略;代理服务器欺骗浏览器,让它认为这里的确有像http://www.google.com/selenium/这样的目录。
    3.支持HTTPS/SSL:
    这里不说了,都支持。Selenium RC在“是”后面加*因为它是在最近版本支持的,仅此而已。

    4.需要Java:准确的说是需要JRE
    这项只有Selenium RC需要,上面2中所说的“代理服务器”是一个Java程序,需在跑测试案例前启动。
    5.将测试结果保存到磁盘
    只有Selenium Core不能将任何测试结果写到磁盘上(因为它是用javascript写的,它不允许向磁盘写数据),其解决方案是当然你可以将测试结果发送到另外一台服务器保存。这也是Selenium Core的一大限制。
    6.多语言支持
    (1).Selenium IDE仅支持Selenium语言。
    (2).Selenium RC支持很多语言,如:C#,Java,Python,Ruby等。
    (3).Selenium Core也是仅支持Selenium语言。

    它的优点是:简单,用(Command,Target,Value)三种元素组成一个行为,并且有辅助录制脚本工具(如:Firefox IDE,Selenium Core等),不懂程序的测试人员都可以轻松地编写测试案例。
    它的缺点是:Selenese有一些严格的限制:它没有条件(没有"if"表达式),并且它没有循环(没有"For"表达式)。这会使编写复杂的测试变得困难甚至不可能。
    OK,现在我们来研究下到底该使用哪款工具开展测试!
    (1).Selenium IDE支持并且只支持Firefox浏览器,支持的浏览器太少,而依附于Firefox也不便于日后开展自动化测试,但是,它的录制快捷好用!并且有代码转换功能,可以把Selenium语言测试案例转为C#,Java等语言的测试案例,我建议使用Selenium IDE + FireBug进行测试案例的编写,然后转为其他语言的测试案例后,再调用Selenium RC运行测试案例。
    (2).Selenium Core,它的优点是编写测试案例简单,并且支持绝大多数的浏览器,但缺点也同样明显,Selenium Core需要远程安装,Selenese语言也限制了复杂案例的可能性,并且没有良好的外部扩展,这是些都会是致命的问题。因为一个款测试工具不可能100%满足你测试需求的,当它不能满足你测试需求时候,它必须有一个扩展机制可以让你可以使用其他的方式满足你需求,否则这款测试软件即使功能强大,也请三思慎用,否则当投入大量资源后才发现某些问题不能解决,那时候已经晚了,这是我的切身体会。
    (3).Selenium RC是推荐使用的工具,它支持很多浏览器,可以使用C#,Java等语言编写测试案例,易于维护,同时提供了很好的扩展性。


    展开全文
  • 软件测试技术第二次实验报告 一、需求分析(描述具体需求) Install Selenium with Eclipse. Install Firefox and SeleniumIDE plugin. Try to record and export scripts using SeleniumIDE. Please complete the ...

    软件测试技术第二次实验报告

    一、需求分析(描述具体需求)

    1. Install Selenium with Eclipse.
    2. Install Firefox and SeleniumIDE plugin.
    3. Try to record and export scripts using SeleniumIDE.
    4. Please complete the following task using Selenium: “软件测试名单.xlsx” contains information about the students, and http://121.193.130.195:8800 can view someone’s information after logging in (student id as username, the last 6 digits of student id as password). Please check each record in the excel to make sure that each student’s information is consistent with the information on the website.

    二、概要设计
    在这里插入图片描述
    三、详细设计(详细描述具体如何实现,附代码及说明)

    1. 在Eclipse 中安装Selenium:
      1)将Selenium的jar包放在项目文件夹下的libs文件夹中;
      2)使用菜单进行build;

    2. 在Firefox中安装SeleniumIDE:
      1)在百度搜索add-ons进入Firefox附加组件的下载页面;
      2)搜索下载SeleniumIDE;

    3. 使用SeleniumIDE进行录制:
      1)打开SeleniumIDE,新建一个项目;
      2)输入BASE URL: http://www.baidu.com;
      3)在百度输入框中搜索天津大学;
      4)Verify Title在这里插入图片描述
      5)结束录制;
      6)查看录制结果。

    4. 在Eclipse中使用Selenium工具检查记录:
      1)定义一个Selenium中的WebDriver;
      2)设置driver的属性;
      3)使用while循环依次读入并检验excel中的信息;
      a. 读入一条excel信息;
      b. 使用driver从网站上获取对应信息;
      c. 使用Junit的assertEquals函数检验两者是否相符。

    四、调试分析(在实验过程中遇到的问题以及如何解决)

    1. driver获取到WebElement发生错误:
      查看Junit的报错信息,并在浏览器查看每个元素的属性之后,发现driver的findElement方法使用错误,应该用name属性去查找元素,修改之后运行良好。

    五、 测试结果(描述输入和输出)

    1. 输入:
      软件测试名单.excel
    2. 输出:
      所有信息正确。

    六、 总结
    测试结果:
    在这里插入图片描述

    展开全文
  • chrome自动化测试插件

    2019-04-04 13:41:44
    此款chrome插件适用于自动化测试,配合自动化测试框架selenium可以实现对相关页面全自动化的测试
  • Selenium的主要功能包括:1)测试与浏览器的兼容性:测试应用程序能否兼容工作在不同浏览器和操作系统之上。2)测试系统功能:录制用例自动生成测试...Selenium2(SeleniumWebdriver):全新自动化接口,突破了Seleni
  • 黑马头条测试项目

    黑马头条测试项目

    1. 自动化测试流程

    1. 自动化测试流程

    1. 需求分析
    2. 挑选适合做自动化测试的功能
    3. 设计测试用例
    4. 搭建自动化测试环境
      • web自动化测试环境(4个)
        • python开发者工具(pycharm, python解释器)
        • 浏览器
        • 浏览器驱动
        • selenium
      • app自动化测试环境(5个)
        • 手机或模拟器
        • 安卓sdk
        • python开发工具
        • appium服务器
        • appium服务客户端
    5. 设计自动化测试项目架构
    6. 编写代码
    7. 执行测试用例
    8. 生成测试报告并分析结果

    2. 黑马头条项目简介

    1. 项目背景

    作为一个IT教育机构,拥有自己开发且实际运营的产品,将开发和运营的技术作为授课的内容,对于学员而言学到的都是一手的真实案例和实际经验,知识内容也可以细化深入。 而且一个产品就可以涵盖公司多个学科的技术,衍生的课程价值辐射多个学科。这可以作为公司的一个核心竞争力。

    2. 产品定位

    一款汇集科技资讯、技术文章和问答交流的用户移动终端产品。 用户通过该产品,可以获取最新的科技资讯,发表或学习技术文章,讨论交流技术问题。

    3. 项目目标

    1. 研发并上线运营头条产品
    2. 从实际的产品技术中孵化产品经理、Python 人工智能、Python 数据分析、Python Web、测试、运维等课程案例
    3. 构建公司自己的数据仓库和算法模型

    3. 产品功能架构

    自媒体:又称“个人媒体”,是指私人化、平民化、自主化的传播者, 以现代化、电子化的手段,向不特定的大多数或者特定的单个人传递信息的新媒体的总称。 自媒体平台包括:博客、微博、微信、抖音、百度贴吧、论坛/BBS等网络社区。

    在这里插入图片描述
    产品主要分为三个前端子产品:

    1. 用户端
      APP,用户可以查看资讯、文章内容,进行问答讨论交流
    2. 自媒体运营平台
      PC网站,自媒体用户可以管理文章、评论,查看分析粉丝数据
    3. 系统后台
      PC网站,内部运营管理系统

    产品后端系统功能可分为以下几个部分:

    1. 推荐系统部分
      负责为用户个性化推荐资讯和文章
    2. 人工智能部分
      机器自动审核文章、文章画像提取、机器学习推荐算法等
    3. 日志系统部分
      收集保存用户行为数据和系统运行状态数据
    4. 爬虫部分
      爬取网站资讯文章数据,作为产品启动的初期数据来源

    4. 产品技术架构

    在这里插入图片描述

    5. 负载均衡

    负载均衡器: 负载均衡(Load Balance)可以将工作任务分摊到多个处理单元, 从而提高并发处理能力
    负载均衡器建立在现有网络结构上, 使用它可以实现网络设备的带宽, 增加吞吐量, 加强网络数据处理能力, 提高网络的灵活性和可用性

    负载均衡器在工作当中, 要么使用nginx(软件负载均衡), 要么使用F5(硬件负载均衡), 如果使用的是阿里云或者是腾讯云, SLB负载均衡, nginx既可以做负载均衡, 也可以做web前端的中间件

    6. 消息队列

    消息队列(Message Queue, MQ): 是在消息传输过程中保存消息的容器
    消息队列中间件是分布式系统中重要的组件, 主要解决应用解耦, 异步消息, 流量削峰等问题, 实现高性能, 高可用, 可伸缩和最终一致性架构

    目前使用较多的消息队列有: Kafka, ActiveMQ, RabbitMQ, ZeroMQ, MetaMQ, RocketMQ

    应用场景

    • 异步处理
      将业务逻辑处理由串行方式变成并行方式(好友推荐, 新闻推荐)
    • 应用解耦
      订单系统 --> 库存系统
      发送短信验证码
    • 流量削峰
      秒杀, 抢购活动(用户访问量过大, 导致流量暴增, 应用挂掉)
    • 日志处理
      将消息队列用早日志处理中, 解决大量日志传输的问题

    7. 用例设计

    1. 编写自动化测试用例的原则

    • 自动化用例一般只实现核心业务流程或者重复执行率较高的功能
    • 自动化测试用例的选择一般以"正向"逻辑的验证为主
    • 不是所有的手工用例都可以使用自动化测试来执行
    • 尽量减少多个用例脚本之间的依赖
    • 自动化测试用例执行完毕后, 一般需要回到原点

    2. 编写测试用例

    1. 自媒体自媒体

    2. 后台管理系统在这里插入图片描述

    3. APP在这里插入图片描述

    8. 自动化框架结构设计

    1. 初始化项目

    1. 新建项目

    项目名称: uiAutoTestHmtt

    2. 创建目录结构

    • uiAutoTestHmtt #项目名称
    • base #封装PO基类
    • page #封装PO页面对象
    • script #定义测试用例脚本
    • data #存放测试数据
    • report #存放生成的测试报告
    • log #存放测试文件
    • screenshot #存放截图
    • config.py #定义项目配置信息
    • utils.py #定义工具类
    • pytest.ini #pytest配置文件
    • conftest #pytest.ini运行配置

    3. 安装依赖包

    • selenium包
    • Appium-Python-Client包
    • pytest包
    • pytest-ording包
    • allure-pytest包

    2. 初始化代码

    1. 封装工具类

    • 封装PO类, 定义BasePage和BaseHandle
      • pytest.ini
    [pytest]
    addopts = -s -v --html=report/report.html --reruns 3
    testpaths = ./uiAutoTestHmtt/script
    python_files = test_*.py
    python_classes = Test*
    python_functions = test_*
    
    • utils.py
    from selenium import webdriver
    from appium import webdriver as appdriver
    
    class UtilsDriver:
    	_mp_driver = None #表示的是自媒体平台的驱动
    	_mis_driver = None #表示的是后台管理驱动
    	_app_driver =None # 表示的是app的驱动
    	
    	# 定义获取自媒体平台的浏览器驱动
    	@classmethod
    	def get_mp_driver(cls):
    		if cls._mp_driver is None:
    			cls._mp_driver = webdriver.Chorm()
    			cls._mp_driver.get("http://ttmp.research.itcast.cn/")
    			cls._mp_driver.maximize_window()
    		return cls._mp_driver
    
    	# 定义退出自媒体平台浏览器驱动
    	@classmethod
    	def quit_mp_driver(cls):
    		if cls._mp_driver is not None:
    			cls.get_mp_qdriver().quit()
    			cls._mp_driver = None
    	
    	# 定义获取后台管理的驱动
    	@classmethod
    	def get_mis_driver(cls):
    		if cls._mis_driver is None:
    			cls._mis_driver = webdriver.Chrom()
    			cls._mis_driver.maximize_window()
    			cls._mis_driver.get("http://ttmis.research.itcast.cn/")
    		return cls._mis_driver
    
    	# 定义退出后台管理系统操作方法
    	@classmethod
    	def quit_mis_driver(cls):
    		if cls._mis_driver is not None:
    			cls.get_mis_driver().quit()
    			cls._mis_driver = None
    
    	# 定义获取app驱动
    	@classmethod
    	def get_app_driver(cls):
    		if cls._app_driver is None:
    			des_cap = {
    				"platformName": "android",
    				"platformVersion": "5.1.1",
    				"deviceName": "emulator-5554",
    				"appPackage": "com.itcast.toutiaoApp",
    				"appActivity": ".MainActivity",
    				"noReset": True, #用来记住app的session
    				"resetKeyboard": True,  #重置设备输入键盘
    				"unicodeKeyboard": True # 采用unicode编码输入
    			}
    			cls._app_driver = appdriver.Romate("http://127.0.0.1:4723/wd/hub", des_cap)
    			return cls._app_driver
    
    	# 退出app浏览器驱动
    	@classmethod
    	def quit_app_driver(cls):
    	if cls._app_driver is not None:
    		cls.get_app_driver().quit()
    		cls._app_driver = None
    

    基类的封装

    1. 媒体平台的封装
      base包 -> 创建mp包 -> 在mp包下创建base.py文件
    	from selenium.webdriver.support.wait import WebDriverWait
    
    	from utils import UtilsDriver
    
    
    	# 定义自媒体平台的基类
    	# 对象库层基类的封装
    	class BasePage:
    		def __init__(self):
    			self.driver = UtilsDriver.get_mp_driver()  # 获取自媒体浏览器驱动
    		
    		def get_element(self, location):
    		wait = WebDriverWait(self.driver, 10, 1)
    		element = wait.until(lambda x: x.find_element(*location))
    		return element
    	
    	# 操作层基类的封装
    	class BaseHandle:
    	def input_text(self, element, text):
    		element.clear()
    		element.send_keys(text)
    
    1. 后台管理基类封装
      base包 -> 创建mis包 -> 在mis包下创建base.py文件
    from selenium import webdriver
    
    from utils import UtilsDriver
    
    	# 定义后台管理的基类
    	# 页面对象层封装
    	class BasePage:
    	def __init__(self):
    		self.driver = UtilsDriver.get_mis_driver()  # 获取后台管理驱动
    	
    	def get_element(self, location)
    	wait = WebDriverWait(self.driver, 10, 1)
    	element = wait.until(lambda x: x.find_element(*location))
    	return element
    	
    	# 操作层的封装
    	class BaseHandle:
    		def input_text(self, element, text):
    			element.clear()
    			element.send_keys(text)
    
    1. app基类封装
      base包 -> 创建app包 -> 在app包下创建base.py文件
    from selenium import webdriver
    
    from utils import UtilsDriver
    	# 定义app平台的基类
    	# 对象库层基类封装
    	class BasePage:
    		def __init__(self):
    			self.driver = UtilsDriver.get_app_driver()   # 获取app浏览器驱动
    
    		def get_element(self, location):
    			wait = WebDriverWait(self.driver, 10, 1)
    			element = wait.until(lambda x: x.find_element(*location))
    			return element
    	
    	# 操作层基类封装	
    	class BaseHandle:
    		def input_text(self, element, text):
    			element.clear()
    			element.send_keys(text)
    

    自媒体平台的封装

    自媒体登录页面的封装

    page包 -> 新建mp包 -> 创建登录界面login_page.py

    from base.mp.base import BasePage, BaseHandle
    
    from selenium.webdriver.common.by import By
    
    # 定义对象库层
    class LoginPage(BasePage):
    	def __init__(self):
    		super().__init__()
    		# 手机号码输入框
    		self.mobile = By.XPATH, "//*[@placeholder='请输入手机号']"
    		# 验证码输入框
    		self.code = By.XPATH, "//*[@placeholder='验证码']"
    		# 登录按钮
    		self.login_btn = By.CSS_SELECTOR, ".el-button--primary"
    
    		# 定位手机号码输入框
    		def find_mobile(self):
    			return self.get_element(self.mobile)
    		
    		# 定位验证码输入框
    		def find_code(self):
    			return self.get_element(self.code)
    
    		# 定位登录按钮
    		def find_login_btn(self):
    			return self.get_element(self.login_btn)
    
    
    # 定义操作层
    class LoginHandle(BaseHandle):
    def __init__(self):
    	self.login_page = LoginPage()
    
    	# 输入手机号码
    	def input_mobile(self, mobile):
    		self.input_text(self.login_page.find_mobile(), mobile)
    	
    	# 输入验证码
    	def input_code(self, code):
    		self.input_text(self.login_page.find_code(), code)
    
    	# 点击登录按钮
    	def click_login_btn(self):
    		self.login_page.find_login_btn().click()
    
    
    # 定义业务层
    class LoginProxy:
    	def __init__(self):
    		self.login_handle = LoginHandle()
    		
    	def login(self, mobile, code):
    		self.login_page.input_mobile(mobile)  # 输入手机号码
    		self.login_page.input_code(code)  # 输入验证码
    		self.login_page.click_login_btn()  # 点击登录按钮
    
    自媒体平台首页封装

    page包 -> 新建mp包 -> 创建登录界面home_page.py

    from selenium.webdriver.common.by import By
    
    from base.mp.base import BasePage, BaseHandle
    
    # 定义对象层
    class HomePage(BasePage):
    	def __init__(self):
    		super().__init__()
    		# 用户名显示元素
    		self.username = By.CSS_SELECTOR, ".user-name"
    		# 内容管理菜单
    		self.content_manage = By.XPATH, "//*[text()='内容管理']"
    		# 发布文章
    		self.public_btn = By.XPATH, "//*[@class='sidebar-el-menu el-menu']/div[2]/li/ul/li[1]"
    	
    	# 定位用户名显示元素
    	def find_username(self):
    		return self.get_element(self.username)
    	
    	# 定位内容管理菜单
    	def find_content_manage(self):
    		return self.get_element(self.content_manage)
    
    	# 定位发布文章菜单
    	def find_publish(self):
    		return self.get_element(self.publish_btn)
    
    #定义操作层
    class HomeHandle(BaseHandle):
    	def __init__(self):
    		self.home_page = HomePage()
    	
    	# 获取用户名信息
    	def get_username(self):
    		return self.home_page.find_username().text
    	
    	# 点击内容管理菜单
    	def click_content_manage(self):
    		self.home_page.find_content_manage().click()
    
    	# 点击发布文章
    	def click_publish_btn(self):
    		self.home_page.find_publish().click()
    
    # 定义业务层
    class HomeProxy:
    	def __init__(self):
    		self.home_handle = HomeHandle()
    
    	# 获取用户名信息
    	def get_username_msg(self):
    		return self.home_handle.get_username()
    
    	# 跳转到发布文章页面
    	def go_publish_page(self):
    		self.home_handle.click_content_manage()
    		self.home_handle.click_publish_btn()
    

    自媒体平台发布文章页面封装

    page包 -> 新建mp包 -> 创建登录界面publish_page.py

    from base.mp.base import BasePage, BaseHandle
    
    from selenium.webdriver.common.by import By
    
    # 定义对象库层
    class PublicPage(BasePage):
    	def __init__(self):
    		super().__init__()
    		#文章名称输入框
    		self.title = By.XPATH, "//*[@placeholder='文章名称']"
    		# iframe元素对象
    		self.iframe_ele = By.ID, "publishTinymce_ifr"
    		# 文章内容输入框
    		self.content = By.CSS_SELECTOR, ".mce-content-body"
    		# 封面选择
    		self.cover = By.XPATH, "//*[@role=radiogroup]/label[4]/span[2]"
    		# 频道选择
    		self.channel = By.XPATH, "//*[@placeholder='请选择']"
    		# 发表按钮
    		self.publish_btn = By.CSS_SELECTOR, "[class='el-button filter-item el-button--primary']"
    
    		# 寻找文章标题
    		def find_title(self):
    			return self.get_element(self.title)
    		# 找到切换的iframe
    		def find_iframe_ele(self):
    			return self.get_element(self.iframe_ele)
    		# 找到文章内容输入框
    		def find_content(self):
    			return self.get_element(self.content)
    		# 找到封面选择输入框
    		def find_cover(self):
    			return self.get_element(self.cover)
    		# 定位频道选择输入框
    		def find_channel(self):
    			return self.get_element(self.channel)
    		# 定位发表按钮
    		def find_publish_btn(self):
    			return self.get_element(self.publish_btn)
    
    # 操作层
    class PublishHandle(BaseHandle):
    	def __init__(self):
    		self.publish_page = PublishPage()
    		self.driver = UtilsDriver.get_mp_driver()
    
    	# 输入文章标题
    	def input_title(self, title)
    		self.input_text(self.publish_page.find_title(), title)
    
    	# 输入文章内容
    	def input_content(self)
    		# 切换到iframe中
    		self.driver.switch_to.frame(self.publish_page.find_iframe())
    		# 输入文章内容
    		self.input_text(self.publish_page.find_input_content(), content)
    		# 切回默认首页
    		self.driver.switch_to.default_content()
    	
    	# 选择封面
    	def choice_cover(self):
    		self.publish_page.find_cover().click()
    	
    	#选择频道
    	def choice_channel(self):
    		choice_channel(self.driver, self.publish_page.find_channel_choice(), channel)
    	
    	#点击发布按钮
    	def click_publish_btn(self):
    		self.publish_page.find_publish_btn().click()
    
    # 业务层封装
    class PublishProxy:
    	def __init__(self):
    		self.publish_handle = PublishHandle()
    	
    	# 发布文章
    	def publish_article(self, title, content, channel):
    		# 输入文章标题
    		self.publish_handle.input_title(title)
    		self.publish_handle.input_content(content)
    		self.publish_handle.choice_cover()
    		self.publish_handle.choice_channel(channel)
    		self.publish_handle.click_publish_btn()
    

    在utils模块中封装选择频道的方法

    ......
    def choice_channel(driver, element, channel)
    """
    param driver: 浏览器驱动对象
    param element: 选择元素
    param channel: 要选择的文本内容
    """
    element.click()
    time.sleep(1)
    xpath = "//*[@class='el-select-dropdown__wrap el-scrollbar__wrap']//*[text()='{0}']".format(channel)
    driver.find_element(By.XPATH, xpath).click()
    

    在utils中封装一个方法, 判断元素是否存在

    ......
    # 封装一个方法判断元素是否存在
    def is_exis(driver, text):
    	"""
    	param driver: 浏览器驱动对象
    	param text: 定位元素的文本内容
    	"""
    	xpath = "//*[contains(text(), '{0}')]".format(text)
    	try:
    		time.sleep(2)
    		return driver.find_element(By.XPATH, xpath)
    	expect Expection as e:
    		return False
    

    自媒体测试用例的编写

    scripts模块 -> 创建mp模块 -> 创建test_publish_article.py文件

    from page.mp.login_page import LoginProxy
    from page.mp.home_page import HomeProxy
    from page.mp.publish_page import PublishProxy
    
    class TestPublishArticle:
    	# 定义类级别的fixture初始化方法
    	def setup_class(self):
    		self.login_proxy = LoginProxy()
    		self.home_proxy = HomeProxy()
    		self.publish_proxy = PublishProxy()
    
    	# 定义类级别的fixture销毁方法
    	def teardowm_class(self):
    		UtilsDriver.quit_mp_driver()
    
    	# 定义登录测试用例
    	def test_login(self):
    		self.login_proxy.login("18815687257", "246810")
    		username = self.home_proxy.get_username_msg()
    		assert "test123" == username
    
    	# 定义文章测试用例
    	def test_publish_article(self):
    		self.home_proxy.go_publish_page()
    		self.publish_proxy.publish_article("发布文章_0321_09", "发布文章_0321_09发布文章_0321_09", "数据库")
    		assert is_exist(UtilsDriver.get_mp_driver(), "新增文章成功")
    

    后台管理系统页面的封装

    后台管理系统登录页面的封装

    page包 -> 新建mis包 -> 创建登录界面login_page.py

    from selenium.webdriver.commom.by import By
    '''页面对象层'''
    class LoginPage(BasePage):
    	def __init__(self):
    		super().__init__()
    		self.username = By.Name, "username"
    		self.password = By.Name, "password"
    		self.login_btn = By.ID, "inp1"
    	
    	# 定位用户名输入框
    	def find_username(self):
    		return self.get_element(self.username)
    
    	# 定位密码框
    	def find_password(self):
    		return self.get_element(self.password)
    	
    	# 定位登录按钮
    	def find_login_btn(self):
    		return self,get_element(self.login_btn)
    
    """操作层"""
    class LoginHandle(BaseHandle):
    	def __init__(self):
    		self.login_page = LoginPage()
    	
    	# 输入用户名
    	def input_usernane(self, username):
    		self.input_text(self.login_page.find_username(), username)
    
    	# 输入密码
    	def input_password(self, password):
    		self.input_text(self.login_page.find_password(), password)
    
    	# 点击登录
    	def _click_login_btn(self):
    	# 定义JS
    	js = "document.getElementById('inp1').removeAttribute('disabled')"
    	# 通过execute_script方法执行JS
    	self.login_page.driver.execute_script(js)
    	# 点击登录按钮
    	self.login_page.find_login_btn().click()
    		
    # 定义业务层
    class LoginProxy:
    	def __init__(self):
    		self.login_handle = LoginHandle()
    	
    	# 登录业务操作
    	def login(self, username, password):
    		self.login_handle.input_username(username)
    		self.login_handle.input_password(password)
    		self.login_handle.click_login_btn()
    
    后台登录系统主页的封装

    page包 -> mis包 -> 创建登录界面home_page.py

    # 页面对象层
    class HomePage(BasePage):
    	def __init__(self):
    		super().__init__()
    		# 用户信息
    		self.user_info = By.CSS_SELECTOR, ".user_info.span"
    		# 信息管理
    		seld.content_manage = By.XPATH, "//*[@class='side_bar']/ul/li[3]/a"
    		# 内容审核
    		self.content_audit = By.XPATH, "//*[@class='current3']/li[3]/a"
    
    	# 定位用户信息
    	def find_user_info(self):
    		return self.get_element(self.user_info)
    
    	# 定位信息管理菜单
    	def find_content_manage(self):
    		return self.get_elememt(self.content_manage)
    	
    	# 定位内容审核状态
    	def find_context_audit(self):
    		return self.get_element(self.content_audit)
    
    # 定义操作层
    class HomeHandle(BaseHnadle):
    	def __init__(self):
    		self
    
    展开全文
  • Selenium+Java最专业自动化测试书籍,从入门到精通,向开发人员和测试人员展示了如何使用Selenium进行Web自动化测试。讲解了WebDriver与Selenium RC的区别、WebDriver的架构和设计理念;阐述了WebDriver的部署、基本...
  • 自动化测试的demo,里面有基本的测试例子:上传、下载、登陆等等功能的例子
  • python的Selenium自动化测试
  • 自动化测试模型

    2017-12-27 16:27:23
    概念自动化测试模型可以看作自动化测试框架与工具设计的思想。自动化测试不仅仅是单纯写写脚本运行就可以了,还需要考虑到如何使脚本运行效率提高,代码复用、参数化等问题。自动化测试模型分为四大类:...from seleni
  • 软件测试概念(三)

    2017-03-10 15:36:11
    六、测试类型 按照测试类型来分类: 功能测试:根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。 针对问题:功能错误或遗漏、界面问题、性能错误(大数据的加载)...Seleni
  • selenium-dotnet,vs框架下面的网页自动化测试工具。Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括 ,Chrome,Firefox,IE,PhantomJS(一个...
  • 自动化测试基础

    2021-08-18 13:10:34
    WEB自动化测试 一、适合做自动化测试的项目 软件需求不频繁变更 项目周期时间较长 自动化测试脚本能重复使用 二、自动化测试的介入点 和系统测试介入点一样 三、自动化项目的实施... Python+pycharm+seleni...
  • jmeter接口测试教程 在本文中,我们将看到如何使用Jmeter插件进行客户端性能测试。 我将使用jmeter webdriver插件。 在开始本主题之前,请阅读我以前的文章中有关客户端性能测试的一些基本信息... 从这里下载Seleni...
  • 作为一名软件测试全栈自动化工程师需要具备的能力: 1.全面掌握测试基础理论原理、测试流程与方法; 2.掌握常用测试工具,postman,linux、 jmeter、 RF、 抓包等...5.掌握主流开源接口和UI自动化测试框架使用: seleni
  • 微信公众号【软件测试大本营】回复“资料”,获取100G测试资源。 软件测试之家,软件测试开发知识干货,互联网职场,程序员成长崛起,终身学习者。 为什么要进行自动化测试? 缩短测试周期,节省成本。...seleni...
  • 第二版)高清完整PDF版 Selenium2Python自动化测试实战 Selenium2+Python自动化测试实战(第二版)高清完整PDF版,完整版,完整版,注意这是最新完整版的,不是网上流传的百十页就标称完整版,一定看清楚,是367页!...
  • 篇7 python自动化测试应用-Selenium进阶篇  --lamecho 1.1概要  大家好!我是lamecho(辣么丑),本篇文章将是我们介绍seleni
  • Selenium 测试脚本

    2019-03-31 14:03:30
    Selenium 自动化测试脚本, 录制时自动生成,未进行手工编辑.
  • java selenium 自动化测试环境搭建 配套软件 Firefox53 浏览器 和配套驱动
  • 《selenium2 python 自动化测试实战(第二版)》高清完整PDF版 评分: 《selenium2 python 自动化测试实战(第二版)》 虫师出品,必是精品
  • Python Selenium 自动测试网页

    千次阅读 2017-01-06 19:31:23
    自动测试脚本,多用于regression testing 需要安装Python 和 Selenium http://selenium-python.readthedocs.io/ Selenium 默认浏览器是firefox, 如果用Chrome或者IE 需要自己下 web driver IE ...
  • 分布式自动化实际上的应用场景非常多,例如兼容性测试场景/稳定性场景等等,它可以轻松实现一份代码驱动若干终端执行自动化 分布式执行测试用例,也就是我们在一台机器上执行代码,通过...然后通过地址https://seleni
  • Selenium2+Python自动化测试实战(第二版)高清完整PDF版,完整版,完整版,注意这是最新完整版的,不是网上流传的百十页就标称完整版,一定看清楚,是367页!这本书的老师讲解不错 确实值得学习一下
  • 一个基于Selenium和unittest单元测试框架的一个测试框架SeleniumBase,一些功能和API在探索中 1.安装 pip3 install seleniumbase 安装不同浏览器驱动 seleniumbase install chromedriver seleniumbase install ...
  • 仅供学习分享selenium 自动化测试 python语言
  • java+selenium+maven+testng自动化测试框架实例(实际项目) java+selenium+maven+testng自动化测试框架实例(实际项目) java+selenium+maven+testng自动化测试框架实例(实际项目)
  • 本文件为西北工业大学软件测试课程实验2的实验报告,该实验实现了selenium工具对火狐浏览器,IE浏览器实验自动化测试,及相关测试计划,测试范围的介绍。
  • 经过格式转换的电子书,原书籍为awz3格式的。资源寻找不易,请各位慷慨解囊

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 301
精华内容 120
关键字:

seleni测试