我听说过苏打水,但它似乎需要你注册,并且有一个限制的分钟数(免费加/ 200分钟)。
有没有人知道是否有其他方法来控制浏览器,或者更具体地说是在网页上调用JS?
发布于 2011-05-03 13:49:30
https://github.com/LearnBoost/soda/raw/master/examples/google.js
/**
* Module dependencies.
*/
var soda = require('../')
, assert = require('assert');
var browser = soda.createClient({
host: 'localhost'
, port: 4444
, url: 'http://www.google.com'
, browser: 'firefox'
});
browser.on('command', function(cmd, args){
console.log(' \x1b[33m%s\x1b[0m: %s', cmd, args.join(', '));
});
browser
.chain
.session()
.open('/')
.type('q', 'Hello World')
.clickAndWait('btnG')
.getTitle(function(title){
assert.ok(~title.indexOf('Hello World'), 'Title did not include the query');
})
.clickAndWait('link=Advanced search')
.waitForPageToLoad(2000)
.assertText('css=#gen-query', 'Hello World')
.assertAttribute('as_q@value', 'Hello World')
.testComplete()
.end(function(err){
if (err) throw err;
console.log('done');
});发布于 2011-05-03 04:04:26
Zombie.js可能会为你工作。它是无头的,看起来真的很酷。
发布于 2013-09-13 19:25:01
以下是用于selenium的webdriver的java的纯node.js包装器:
https://npmjs.org/package/webdriver-sync
下面是一个例子:
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文件中,并使用节点运行它。
该模块是一个纯包装器,所以像睡眠或同步调用这样的事情是完全可能的。下面是模块的当前接口:
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)
);
}
};您可以在这里看到一个测试全部功能的集成测试:
https://github.com/jsdevel/webdriver-sync/blob/master/test/integrations/SmokeIT.js
https://stackoverflow.com/questions/5861695
复制相似问题