当前位置: 首页 > news >正文

Node.js selenium-webdriver

6.5. Node.js selenium-webdriver

6.5.1. 安装测试环境

6.5.1.1. Selenium Server

下载 Selenium Serverhttp://selenium-release.storage.googleapis.com/2.40/selenium-server-standalone-2.40.0.jar

启动 Selenium Server

java -jar selenium-server-standalone-2.40.0.jar
			
6.5.1.2. 安装 selenium-webdriver

CentOS 6.5

# yum install nodejs npm 
# npm -g install selenium-webdriver
			

默认node_modules安装在 /usr/lib/node_modules/selenium-webdriver

Ubuntu 13.04

sudo apt-get install nodejs
sudo apt-get install npm
sudo npm -g install selenium-webdriver
			

默认node_modules安装在 /usr/local/lib/node_modules/selenium-webdriver

不是用-g参数npm install selenium-webdriver 将会安装在当前目录下

6.5.1.3. 浏览器相关设置

远程控制Chrome参考

https://code.google.com/p/selenium/wiki/ChromeDriver下载后解压运行里面的可执行文件

var driver = new webdriver.Builder().usingServer('http://192.168.6.20:9515/').withCapabilities(webdriver.Capabilities.chrome()).build();  
			

Firefox 使用

var driver = new webdriver.Builder().usingServer('http://192.168.6.20:4444/wd/hub').withCapabilities(webdriver.Capabilities.firefox()).build();  				
			

6.5.2. 测试例子

例 6.3. Node.js selenium-webdriver 本地测试

selenium-server-standalone 与 测试脚本在同一台机器上

			
var webdriver = require('selenium-webdriver');

var driver = new webdriver.Builder().
    withCapabilities(webdriver.Capabilities.chrome()).
    build();

driver.get('http://www.google.com');
driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');
driver.findElement(webdriver.By.name('btnK')).click();
driver.wait(function() {
  return driver.getTitle().then(function(title) {
    return title === 'webdriver - Google Search';
  });
}, 1000);

driver.quit();
			
			

例 6.4. NODE.JS selenium-webdriver 远程测试

从一台测试机遥控另台selenium-server-standalone

			
var webdriver = require('/usr/local/lib/node_modules/selenium-webdriver');

var builder = new webdriver.Builder().  
  usingServer('http://192.168.6.20:4444/wd/hub').  
  withCapabilities(webdriver.Capabilities.firefox());  

var driver = builder.build();  

driver.get('http://www.google.com');
driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');
driver.findElement(webdriver.By.name('btnK')).click();
driver.wait(function() {
  return driver.getTitle().then(function(title) {
    return title === 'webdriver - Google Search';
  });
}, 1000);

driver.quit();
			
			

6.5.3. Unit Test

安装 mocha

npm install -g mocha
		

测试脚本

var assert = require('assert'),
test = require('selenium-webdriver/testing'),
webdriver = require('selenium-webdriver');

test.describe('Google Search', function() {

	test.it('should work', function() {
		//var driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome()).build();
		var driver = new webdriver.Builder().usingServer('http://192.168.6.20:4444/wd/hub').withCapabilities(webdriver.Capabilities.firefox()).build();  
		driver.get('http://www.google.com');
		var searchBox = driver.findElement(webdriver.By.name('q'));
		searchBox.sendKeys('simple programmer');
		searchBox.getAttribute('value').then(function(value) {
			assert.equal(value, 'simple programmer');
		});
		driver.quit();
	});
});
		

运行测试程序

# mocha mocha.js 
  1 passing (10s)
		

测试成功返回1 passing (10s)

相关文章:

  • Linux Process Manage
  • Linux下的三个时间属性
  • DRBD源码安装配置
  • Power Gating的设计(模块二)
  • php热身2:CRUD with Ajax
  • HIVE中的自定义函数
  • js创建数组的三个方式
  • 零基础小白也能做测试经理(高级测试工程师)?!
  • 【Django】Django Debug Toolbar调试工具配置
  • Jenkins2.3重点备忘
  • 4——PHP比较复制运算符
  • 利用amoeba实现mysql读写分离
  • XML序列化点滴
  • sqlalchemy(二)高级用法
  • eclipse properties 插件
  • ES6指北【2】—— 箭头函数
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • Angular4 模板式表单用法以及验证
  • Docker 笔记(2):Dockerfile
  • HTTP--网络协议分层,http历史(二)
  • Java 最常见的 200+ 面试题:面试必备
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • PV统计优化设计
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Twitter赢在开放,三年创造奇迹
  • 对象引论
  • 跨域
  • 如何在GitHub上创建个人博客
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • #1014 : Trie树
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (java)关于Thread的挂起和恢复
  • (编译到47%失败)to be deleted
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (十)T检验-第一部分
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (一)Java算法:二分查找
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)Google的Objective-C编码规范
  • (转)http-server应用
  • (转)Mysql的优化设置
  • (转)项目管理杂谈-我所期望的新人
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .Net Web项目创建比较不错的参考文章
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .Net7 环境安装配置
  • .pub是什么文件_Rust 模块和文件 - 「译」