本文目录一览:
- 1、Web UI自动化测试之Selenium3
- 2、web自动化中页面多个滚动条时的拖动操作?
- 3、web自动化测试,使用node.js 与python哪个语言更合适
- 4、如何搭建webdriver+selenium+nodejs自动化测试框架
- 5、Web自动化测试有什么常用的工具?
- 6、[Selenium自动化测试实战] 不打开浏览器如何进行WEB自动化测试
Web UI自动化测试之Selenium3
一、WebDriver(import org.openqa.selenium.WebDriver)操作浏览器
selenium通过WebDriver对象来定位页面元素
1、打开浏览器
打开火狐浏览器:
WebDriver driver = new FireFoxDriver();
打开IE浏览器:
WebDriver driver = new InternetExplorerDriver();
打开chrome浏览器
WebDriver driver = new ChromeDriver();
2、最大化浏览器
driver.manage().window().maximize();
3、关闭浏览器
driver.close();
driver.quit();
4、打开测试页面
driver.get("http:");
二、By(org.openqa.selenium.By) 定位页面元素
selenium通过By对象来定位页面元素
1、By.id 通过ID定位页面元素
By.id("UserCode")
2、By.name 通过name定位页面元素
By.id("UserCode")
3、By.className 通过className定位页面元素
By.className("input_class")
4、By.linkText 精确查找
drive.get("");
By.linkText("百科");
5、By.partialLinkText 模糊查找
driver.get("");
By.partialLinkText("百科");
6、By.tagName
dirver.get("");
By.tagName("input");
三、WebElement(org.openqa.selenium.WebElement)操作页面元素
selenium通过WebElement对象来操作页面元素
1、操作输入框
WebElement inputElement = driver.findElement(By.id("UserCode"));//查找登录页面录入用户名元素
inputElement.setKeys("wyl");//输入框录入用户名wyl
inputElement.clear();//清空输入框
inputElement.getText();//获得输入框中的内容
2、操作单选框
WebElement radioElement = driver.findElement(By.id("Orders"));
radioElement.click();// 选择某个单选项
radioElement.clear();// 清空某个单选项
radioElement.isSelected();// 判断某个单选项是否已被选择
3、操作多选框
WebElement checkboxElement = driver.findElement(By.id("Orders"));
checkboxElement.click();// 选择某个多选项
checkboxElement.clear();// 清空某个多选项
checkboxElement.isSelected();//判断某个多选项是否已被选择
4、操作下拉框
Select select = new Select(per.findElement(By.id("region")));
select.selectByVisibleText("北京市");
select.selectByText("10010");
select.deselectAll();
select.deselectByVisibleText("北京市");
select.deselectByText("10010");
select.getAllSelectedOptions();
select.getFirstSelectedOption();
5、操作上传文件
WebElement uploadElement = driver.findElement(By.id("file"));
String uploadFile = "D:1AgentCode.txt";
uploadElement.setKeys(uploadFile);
6、操作按钮
WebElement btnElement = driver.findElement(By.id("add"));
btnElement.click();
btnElement.isEnabled();
7、表单提交
WebElement formElement = driver.findElement(By.id("fm"));
fromElement.submit();
8、操作弹出对话框
Alert alert = driver.swichTo().alert();
alert.getText();//获得弹出框内容
alert.accept();//点击弹出框确认按钮
alert.dismiss();//点击弹出框取消按钮
9、Windows和Frames之间的切换
driver.switchTo().defaultContent();//返回到最顶层的frame
driver.switchTo().frame("leftMenuFrame");//切换到左侧菜单frame
driver.switchTo().window("windowName");//切换到某个windows
10、超时设置
driver.manage().timeouts().implicitly(10,timeUnit.Seconds);//识别元素时的超时时间
driver.manage().timeouts().pageLoadTimeout(10,timeUnit.Seconds);//页面加载时的超时时间
driver.manage().timeouts().setScriptTimeout(10,timeUnit.Seconds);//异步脚本的超时时间
四、调用js
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("JS脚本");
五、Selenium官方
1、官方download包下载地址
2、官方User Guide
3、API
web自动化中页面多个滚动条时的拖动操作?
当页面中有多个滚动条控制显示范围时,拖动指定的滚动条,可以通过JS语句来实现document.querySelector('.summary').scrollTop=200;解释: 1.通过在页面中通过选择器进行元素定位 2.将定位到的指定元素scrollTop属性设置为200然后通过driver.execute_script()方法执行js语句即可,需要的小伙伴可以到传智播客的社区看到相关操作的全部解答。传智播客的官网也可以领取到相关的免费的公开课。
web自动化测试,使用node.js 与python哪个语言更合适
Node.js是现在WEBAPP快速开发的标配。python的WEB框架还有模板很多。这个取决于你习惯什么方式开发。
如果熟悉 python使用node.js没有压力,可以完美融合。 如果对python不熟悉,node.js可以给你惊喜。
不过就我个人而言python很熟练,python给我的自由度与支撑力度远远大于node.js。 node.js是一些喜欢javascript的极客做的js的后台执行程序。 支持力度显然远远比不上有10几年WEB开发历史的python。
node.js有一个最大的好处是前端与后端的融合比较好。都是JS开发的。有利于前端人员快速开发后台服务器。
再加上node.js大量爆发的各种工具。所以node.js很有前途。 相对python的架构不温不火。
从开发速度来看。两者差不多。从系统维护性上。 python要好很多。
从最高性能上看,python也要好很多。 著名的某团队聊天软件就是node.js架构。
但是限于javascript语言本身的性能以及执行方式,支持力度。 后台开发还是不建议用node.js,除非你有足够的理由 。比如快速开发,比如缺少足够 的后台开发人员,或者是团队成员整体偏前端等。
node.js真的很适合初学者。 特别是正在学习javascript人。 不过node.js想做好就不容易,特别是团队规模超过10个人时,代码很难维护。
v8引擎很强大,大多数测试结果显示node.js比python性能高。这个感觉挺无语。 js在v8上的优化效果的的确确比python解释器要强。这是事实。 不过python如果你用得很熟练的情况下,有很多技巧可以将这些差距缩小,以至于超过,完全没有压力。
比如我这边做一个服务器,通常性能要求很高的情况下,不会使用python做前端,而是使用java+cache做后台服务器前端。 这样性能就远远超过其它的WEB后端服务器了。
python在后处理,批处理,数据处理,快速开发很强大。 WEB方面就当是玩具吧。 算是一种快速 开发的补偿。 做做胶水,连接不同系统的接口还是可以的。
如何搭建webdriver+selenium+nodejs自动化测试框架
1
安装nodejs程序包
2
打开nodejs
从开始程序中选择Node.js---Node.js command prompt
3
在命令窗口输入以下命令
一、npm install webdreverio -g
二、npm install selenium-standalone@latest -g
4
安装selenium服务,在命令窗口输入以及下命令
selenium-standalone install
此时会报错,告诉你IE和谷歌驱动安排不成功
解决方法:新此目录下的C:\Users\saber\AppData\Roaming\npm\node_modules\selenium-standalone\.selenium的chromedriver和iedriver文件夹替换掉
5
配置环境变量
编辑用户变量:
变量名:PATH
变量值:C:\Users\saber\AppData\Roaming\npm
新建系统变量:
变量名:node_path
变量值:C:\Users\saber\AppData\Roaming\npm\node_modules
6
开启selenium服务,在命令窗口输入以下命令
selenium-standalone start
7
打开cmd窗口,输入脚本的位置
8
运行自动化测试脚本
至此,webdriver+selenium+nodejs的自动化框架就搭建完成,大家尽情编写js脚本吧。
Web自动化测试有什么常用的工具?
一、单元测试/测试运行器
1、Jest
知名的 Java 单元测试工具,由 Facebook 开源,开箱即用。它在最基础层面被设计用于快速、简单地编写地道的 Java 测试,能自动模拟 require() 返回的 CommonJS 模块,并提供了包括内置的测试环境 Dom API 支持、合理的默认值、预处理代码和默认执行并行测试在内的特性。通过在并行进程中同时运行测试,让测试更快地结束。
2、AVA
号称“未来的测试运行器”,利用 Java 在 Node.js 里使得 IO 可以并行的优点,让你的测试可以并发执行,这对于 IO 繁重的测试特别有用。另外,测试文件可以在不同的进程里并行运行,让每一个测试文件可以获得更好的性能和独立的环境。测试并发执行强制你写原子测试,意味着测试不需要依赖全局状态或者其他测试的状态。
3、Mocha
一个功能丰富的测试框架,用于 Node.js 和浏览器上的 Java 应用测试,使异步测试变得简单而有趣。它可以持续运行测试,支持灵活又准确的报告,当映射到未捕获异常时转到正确的测试示例。
3、Mocha
一个功能丰富的测试框架,用于 Node.js 和浏览器上的 Java 应用测试,使异步测试变得简单而有趣。它可以持续运行测试,支持灵活又准确的报告,当映射到未捕获异常时转到正确的测试示例。
4、Karma
基于 Node.js 的 Java 测试运行器,旨在为开发人员带来有效的测试环境。可用于测试所有主流 Web 浏览器,也可集成到 CI 工具,还可和其他代码编辑器一起使用。另外一个强大特性就是,它可以监控文件的变化,然后自行执行,通过 console.log 显示测试结果。
二、Web 测试
1)集成测试
Enzyme
一个用于 React 的 Java 测试工具,方便你判断、操纵和历遍 React Components 输出。其 API 旨在通过模仿 jQuery 的 API ,使得 DOM 操作和历遍很灵活、直观。兼容所有的主要测试运行器和判断库。
2)功能测试
selenium录制器
一个易于使用的采用关键字驱动的理念的浏览器自动化测试解决方案。它强大的录制回放功能是在所有web测试工具中是最强悍的。该工具支持不同级别的测试技能,非程序员可以轻松地启动自动化测试项目,而程序员和高级自动化测试人员可以节省构建新库和维护脚本的时间。
3)Visual 测试
Storybook
一个 UI 组件的开发环境,允许你浏览组件库,查看每个组件的不同状态,以及交互式开发和测试组件。它运行在应用之外,允许隔离开发 UI 组件,这可以提高组件的重用性、可测试性和开发速度。
4)猴子测试(Monkey Testing,也称“搞怪测试”)
Gremlins.js
一个用 Java 编写的猴子测试库,用于 Node.js 和浏览器。通过释放大量无规律的 gremlins 来检测 Web 应用的鲁棒性。
5)服务端测试
1、K6
用于测试性能,以开发人员为中心的负载测试工具。提供了一个通过 REST API 进行编排的清新易用的脚本 API 。使用 Go 和 Java构 建,可以很好地集成到开发工作流程中。
2、SuperTest
SuperAgent 的一个扩展,一个轻量级 HTTP AJAX 请求库。提供对 HTTP 测试的高度抽象, 极大地简化了基于 HTTP 的测试。
更多软件测试知识可关注黑马程序员
[Selenium自动化测试实战] 不打开浏览器如何进行WEB自动化测试
在一般的使用场景下,使用selenium进行web自动化测试都需要打开一个浏览器的实体,测试脚本通过控制webdriver来对浏览器进行操作。但是在一些场景下测试工程师需要在不打开浏览器的情况下进行自动化测试,也就是以headless的方式运行自动化测试。
业界有一些headless的第三方库可以使用,例如大名鼎鼎的PhantomJS。但是这些工具的安装很复杂,同时不一定保证持续的维护。
现在全球最受欢迎的浏览器Chrome在Chrome 59 (Chrome 60 for Windows)版本中已经支持了headless mode,只需要配置一些简单的参数就可以实现。
首先要确认自己机子上的Chrome版本。
require 'selenium-webdriver'
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--remote-debugging-port=9222')
driver = Selenium::WebDriver.for :chrome, options: options
driver.get ""
driver.save_screenshot("#{File.dirname(__FILE__)}/#{Time.now.strftime("%F")}")
通过在Selenium::WebDriver::Chrome::Options类的对象中添加argumentoptions.add_argument('--headless'),可以让我们在Chrome在headless模式下运行。
而第二个argument的作用是针对现有bug的work around。第三个argument的作用则是允许我们可以在另外一个浏览器中debug。
为了观测运行的情况,我保存了一个屏幕截图。
相比于之前的headless web自动化方案,Chrome的优势在于设置的方便,甚至可以和当前的框架无缝切换,同时Chrome作为最为主流的浏览器,你也不用担心持续维护的问题。