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)

目录
相关文章
|
8月前
|
JavaScript
selenium--操作JS弹框
selenium--操作JS弹框
|
5月前
|
Web App开发 JavaScript 前端开发
Python Selenium 执行 JavaScript
Python Selenium 执行 JavaScript
|
Web App开发 前端开发 JavaScript
Selenium 如何定位 JavaScript 动态生成的页面元素
Selenium 是一个自动化测试工具,可以用来模拟浏览器的操作,如点击、输入、滚动等。但是有时候,我们需要定位的页面元素并不是一开始就存在的,而是由 JavaScript 动态生成的。这时候,如果我们直接用 Selenium 的 find_element 方法去定位元素,可能会出现找不到元素的错误,因为页面还没有加载完成。为了解决这个问题,我们需要使用一些特定的定位技巧,让 Selenium 等待元素出现后再进行操作。
367 0
|
9月前
|
Web App开发 JavaScript 前端开发
如何使用Selenium自动化Chrome浏览器进行Javascript内容的数据挖掘和分析?
数据挖掘和分析是当今互联网时代的重要技能,它可以帮助我们从海量的信息中提取有价值的知识,为我们的决策和行动提供支持。但是,有些网站的内容是通过Javascript动态生成的,这就给数据挖掘和分析带来了一定的难度。如何才能有效地获取和处理这些Javascript内容呢?本文将介绍一种简单而强大的方法,就是使用Selenium自动化Chrome浏览器进行Javascript内容的数据挖掘和分析。
如何使用Selenium自动化Chrome浏览器进行Javascript内容的数据挖掘和分析?
|
9月前
|
数据采集 Web App开发 JavaScript
如何使用Selenium自动化Firefox浏览器进行Javascript内容的多线程和分布式爬取
在本文中,我们将介绍如何使用Selenium自动化Firefox浏览器进行Javascript内容的多线程和分布式爬取。我们将以一个简单的示例为例,抓取百度搜索结果页面中的标题和链接,并将结果保存到本地文件中。我们将使用Python语言编写代码,并使用爬虫代理服务器来隐藏我们的真实IP地址。
103 0
如何使用Selenium自动化Firefox浏览器进行Javascript内容的多线程和分布式爬取
|
JavaScript
selenium webdriver执行远程 第三方js解决方案
selenium webdriver执行远程 第三方js解决方案
selenium webdriver执行远程 第三方js解决方案
|
Web App开发 JavaScript 前端开发
selenium 4.0学习(三)JS定位及demo脚本
selenium 4.0学习(三)JS定位及demo脚本
selenium 4.0学习(三)JS定位及demo脚本
|
JavaScript 前端开发 测试技术
软件测试|selenium执行js脚本
软件测试|selenium执行js脚本
145 0
软件测试|selenium执行js脚本
|
JavaScript 前端开发 开发者
干货 | JavaScript脚本注入,完成Selenium 无法做到的那些事
当 webdriver 遇到无法完成的操作时,可以使用 JavaScript 来完成,webdriver 提供了 execute_script() 方法来调用 js 代码。 执行 js 有两种场景: - 在页面上直接执行 js - 在某个已经定位的元素上执行 js JavaScript 是一种脚本语言,有的场景需要使用 js 脚本注入辅助我们完成 Selenium 无法做到的事情。 S
|
JavaScript 前端开发 开发者
干货 | JavaScript脚本注入,完成Selenium 无法做到的那些事
干货 | JavaScript脚本注入,完成Selenium 无法做到的那些事