如何使用node.js控制浏览器(ala Selenium)?

如何使用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

我听说过,但它似乎要求你注册,而且对分钟(免费帐户/200分钟)有限制

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

可能适合您。它没有头,看起来很酷。


是“一个用于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绑定

以下是一些入门的基本步骤:

  • 1安装Node.js,您可以找到
  • 确保你 把它放在你的道路上
  • 使用
    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>