首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用node.js控制浏览器()?

问如何使用node.js控制浏览器()?
EN

Stack Overflow用户
提问于 2011-05-02 19:42:26
回答 4查看 9.5K关注 0票数 8

我听说过苏打水,但它似乎需要你注册,并且有一个限制的分钟数(免费加/ 200分钟)。

有没有人知道是否有其他方法来控制浏览器,或者更具体地说是在网页上调用JS?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-03 13:49:30

https://github.com/LearnBoost/soda/raw/master/examples/google.js

代码语言:javascript
复制
/**
 * 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');
  });
票数 6
EN

Stack Overflow用户

发布于 2011-05-03 04:04:26

Zombie.js可能会为你工作。它是无头的,看起来真的很酷。

票数 6
EN

Stack Overflow用户

发布于 2013-09-13 19:25:01

以下是用于selenium的webdriver的java的纯node.js包装器:

https://npmjs.org/package/webdriver-sync

下面是一个例子:

代码语言:javascript
复制
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文件中,并使用节点运行它。

该模块是一个纯包装器,所以像睡眠或同步调用这样的事情是完全可能的。下面是模块的当前接口:

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5861695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档