当前位置: 首页 > 面试题库 >

量角器在PhantomJS上运行测试

易焱
2023-03-14
问题内容

我似乎无法通过测试成功获得PhantomJS。我试图将其集成到我的项目中,但是在此之后失败了,我尝试仅运行基本的Angular
Docs示例,但遇到了同样的问题。到目前为止,我的步骤:

  • npm install -g phantomjs
  • phantomjs --webdriver=9515 // … GhostDriver-Main-在端口9515上运行
  • protractor protractorConf.js

这是与示例中相同的文件,仅具有browserName,并且seleniumAddress端口已更改:

// An example configuration file.
exports.config = {
  // The address of a running selenium server.
  seleniumAddress: 'http://localhost:9515',

  // Capabilities to be passed to the webdriver instance.
  capabilities: {
    'browserName': 'phantomjs'
  },

  // Spec patterns are relative to the current working directly when
  // protractor is called.
  specs: ['onProtractorRunner.js'],

  // Options to be passed to Jasmine-node.
  jasmineNodeOpts: {
    showColors: true,
  }
};

我收到以下错误消息:

UnknownError: Error Message => 'Detected a page unload event; asynchronous script execution does not work across page loads.'

我在github上发现了这个问题,这似乎是相关的。我以为我对他们的brower-
setup.md
足够了解,可以将其包含在我的beforeEach功能之一中。然后我发现这里
ptor无论如何只是包装驱动程序。哇,我知道我在量角器/selenium土地上是个菜鸟,但是信噪比令人信服。我真的很想使用PhantomJS来获得性能上的好处,但是在此上浪费更多时间的前景正伤着我的头。如果有问题,我使用的是Windows
7 Enterprise 64位。谢谢!


问题答案:

从根本上来说,此修复为我解决了相同的问题:

https://github.com/pschwartau/protractor/commit/1eeff8b1b2e3e8f3b7c8152264411f26d4665a07

如此处最初所述:renanmartins的https://github.com/angular/protractor/issues/85#issuecomment-26846255

内部protractor / lib / protractor.js替换

this.driver.get('about:blank');
this.driver.executeScript(
    'window.name = "' + DEFER_LABEL + '" + window.name;' +
    'window.location.href = "' + destination + '"');

  var driver = this.driver;
  this.getCapabilities().then(function (capabilities) {
    if (capabilities.caps_.browserName === 'phantomjs') {
      driver.executeScript('window.name = "' + DEFER_LABEL + '" + window.name;');
      driver.get(destination);
    } else {
      driver.get('about:blank');
      driver.executeScript(
          'window.name = "' + DEFER_LABEL + '" + window.name;' +
          'window.location.href = "' + destination + '"');
    }

    // Make sure the page is an Angular page.
    driver.executeAsyncScript(clientSideScripts.testForAngular, 10).
      then(function(hasAngular) {
        if (!hasAngular) {
          throw new Error('Angular could not be found on the page ' +
              destination);
        }
      });
  });


 类似资料:
  • 问题内容: 我正在开发AngularJS应用,并希望使用Protractor进行端到端2端测试。我想从Browserstack上提供的测试浏览器套件中受益,并在Browserstack Automate而非本地Selenium服务器上运行测试。 如何设置系统以运行这些测试? 问题答案: 从版本3.0.0开始的量角器添加了对BrowserStack的内置支持。 您只需在您的浏览器中添加以下两个参数即

  • 如何设置系统来运行这些测试?

  • 我想在虚拟机上运行量角器测试。我已经尝试使用以下命令运行它: 不幸的是,这种方法非常缓慢。还有其他方法在虚拟机上运行量角器测试吗?也许是使用selenium的远程webdriver(我不知道如何进行设置)。

  • 问题内容: 我找不到有关如何进行设置的任何信息,但这似乎是一个非常基本的概念,所以我敢肯定有一个答案。 我知道如何通过在配置中设置对象的属性来在不同的浏览器上运行量角器。而且效果很好。我可以将其设置为or 或我需要的任何值,并且它可以按预期运行。但是,对多个浏览器运行单个测试套件的唯一方法(据我所知)是创建单独的配置文件,每个配置文件具有不同的配置文件,然后使用各自的配置运行每个浏览器。这行得通,

  • 我试图运行一个简单的测试,但测试失败了,因为量角器试图与页面同步,但不能,因为它不在角度。有什么需要改变的想法吗? 配置文件: 得到以下消息:失败:等待量角器与页面同步时出错:“angularJS测试性和angular测试性都未定义。这可能是因为这是一个非angular页面,或者是因为您的测试涉及客户端导航,这可能会干扰量角器的引导。有关详细信息,请参阅http://git.io/v4gxm 如有

  • 我正在使用量角器对角度应用程序运行测试。他们在我的OSX环境中工作,但在TeamCity尝试运行它的Linux上却不工作。 当我在本地OSX环境中运行此命令时,它可以工作(在我的同事机器上也进行了测试): 当我在linux机器上运行此操作时,或者TeamCity作业尝试运行它时,它会失败: 我已经研究过这个问题,但独立的webdrive服务器不是解决方案。 我研究了这个问题,但我的selenium