如何使用node.js控制浏览器(ala Selenium)?
我听说过,但它似乎要求你注册,而且对分钟(免费帐户/200分钟)有限制 有人知道是否有其他方法来控制浏览器,或者更具体地说,在网页上调用JS吗?可能适合您。它没有头,看起来很酷。如何使用node.js控制浏览器(ala Selenium)?,node.js,Node.js,我听说过,但它似乎要求你注册,而且对分钟(免费帐户/200分钟)有限制 有人知道是否有其他方法来控制浏览器,或者更具体地说,在网页上调用JS吗?可能适合您。它没有头,看起来很酷。 是“一个用于webdriver/selenium 2的node.js javascript客户端”下面是一个纯node.js包装器,用于selenium的webdriver的java API: 下面是一个例子: var webdriverModule = require("webdriver-sync"); var
是“一个用于webdriver/selenium 2的node.js javascript客户端”下面是一个纯node.js包装器,用于selenium的webdriver的java API: 下面是一个例子:
var webdriverModule = require("webdriver-sync");
var driver = new webdriverModule.ChromeDriver;
var By = webdriverModule.By;
var element = driver.findElement(By.name("q"));
element.sendKeys("Cheese!");
element.submit();
element = driver.findElement(By.name("q"));
assert.equal(element.getAttribute('value'), "Cheese!");
将其保存在.js文件中,并与node一起运行
该模块是一个纯包装器,因此完全可以进行睡眠或同步调用。以下是模块的当前界面:
module.exports={
ChromeDriver:ChromeDriver,
FirefoxDriver:FirefoxDriver,
HtmlUnitDriver:HtmlUnitDriver,
By:new By(),
ExpectedConditions:new ExpectedConditions(),
WebDriverWait:WebDriverWait,
Credentials:UserAndPassword,
Cookie:Cookie,
TimeUnits:TimeUnits,
/**
* @param {number} amount in mills to sleep for.
*/
sleep:function(amount){
java.callStaticMethodSync(
"java.lang.Thread",
"sleep",
new Long(amount)
);
}
};
您可以在此处看到测试完整功能的集成测试:
事实上,现在有了与Node.js一起使用的JavaScript Selenium绑定 以下是一些入门的基本步骤:
npm安装selenium webdriver
将模块添加到项目中
var webdriver=require('selenium-webdriver')
var driver=new webdriver.Builder()。
withCapabilities(webdriver.Capabilities.chrome())。
build();
司机,上车http://www.google.com');
driver.findElement(webdriver.By.name('q')).sendKeys('simple programmer');
driver.findElement(webdriver.By.name('btnG'))。单击();
driver.quit()代码>
我将通过一些屏幕截图介绍如何实现这一点,以及如何在中使用摩卡作为测试驱动程序。这是用于跨平台拍摄视频的。您可以在您的机器上使用soda如何将其连接到localhost:4444,这将是我的Selenium浏览器实例?@Alfred-ahhh,谢谢。。你能把这个贴出来作为答案吗?我不明白这个无头的东西。即使它能在Zombie的浏览器中工作,也不能保证它能在FF、IE、Chrome、Safari和Opera上工作。你可以运行检查功能的测试,然后用其他东西验证渲染。我使用zombie.js来加速验证,但不是完全替换它。@mcotton如何验证渲染?你的意思是将zombie.js上的html输出与实际浏览器上的输出进行比较吗?@ajsie我认为这件事更多的是测试网站的功能(例如在大型重构期间),而不是测试浏览器的兼容性。至少这就是我对它感兴趣的原因。有什么好地方可以找到教程吗?我无法运行单个wd示例,因为
title
变量为undefined
错误
module.exports={
ChromeDriver:ChromeDriver,
FirefoxDriver:FirefoxDriver,
HtmlUnitDriver:HtmlUnitDriver,
By:new By(),
ExpectedConditions:new ExpectedConditions(),
WebDriverWait:WebDriverWait,
Credentials:UserAndPassword,
Cookie:Cookie,
TimeUnits:TimeUnits,
/**
* @param {number} amount in mills to sleep for.
*/
sleep:function(amount){
java.callStaticMethodSync(
"java.lang.Thread",
"sleep",
new Long(amount)
);
}
};
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).
build();
driver.get('http://www.google.com');
driver.findElement(webdriver.By.name('q')).sendKeys('simple programmer');
driver.findElement(webdriver.By.name('btnG')).click();
driver.quit();</code>