首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PageObjects +非角度页面-如何加入他们?

PageObjects +非角度页面-如何加入他们?
EN

Stack Overflow用户
提问于 2016-01-22 15:47:33
回答 1查看 560关注 0票数 4

我在为我们的应用写一些量角器测试。有一个地方是非角页,就像角页中的iframe .

问题:我无法从page对象中的非角度页面映射字段,并在我的测试规范中正确地使用它们。

备注:

  • 我尝试将Page对象写为对象(var DamagePage:{})和函数(var DamagePage = function() {})。在这种情况下,两者都是不好的。
  • 在规范中,从非角度页面调用字段显然很好,但是为了正确的项目组织,我希望它在page对象中。
  • 我设定了browser.driver.ignoreSynchronization =真;

这是我的spec>

代码语言:javascript
复制
'use strict';

var DamagePage = require('../../pages/case/CaseDamagePage.po.js');

describe('Damage selection - ', function() {

  var damagePage = new DamagePage();

  it('Switch to iFrame',function(){
      browser.driver.switchTo().frame('padIframe');
  });

  it('Open a zone', function() {
      browser.driver.findElement(by.id('30_0_79')).click();
      browser.sleep(2000);
  });

  it('Select a part', function () {
      browser.driver.findElement(by.id('32_0_201')).click();
      browser.sleep(3000);
  });

  it('Put I on it with 5 WU', function() {
      // Click I
      damagePage.leftMenuButtons.I.button.click();
  });

这是我的PageObject (实际上是函数)>)

代码语言:javascript
复制
'use strict';

var CaseInterface = require('./CaseInterface.js');

var DamagePage = function() {

  // LEFT-SITE MENU BUTTONS
  this.leftMenuButtons = {
      I: {
          button: browser.driver.findElement(by.id('operation-button-I'))
      },
      E: {
          button: element(by.id('operation-button-E')),
          mutation: element(by.id('operation-button-mutation-E'))
      }
  };
};

module.exports = DamagePage;

在规范中,所有的工作都很好,直到“让我用5吴”的步骤。在此配置中,我在量角器启动后立即出错:

C:\Users\xxx\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\error.js:108 var模板=新错误(this.message);^ NoSuchElementError:没有这样的元素:无法找到元素:{“方法”:“id”,“选择器”:“操作-按钮-i”}(会话信息: chrome=47.0.2526.106) (驱动程序信息: chromedriver=2.19.346078 (6f1f0cde889532d48ce8242342d0b84f94b114a1),platform=Windows NT 6.1 SP1 x86_64) (警告:服务器没有提供任何堆栈跟踪信息)命令持续时间或超时时间: 22毫秒以获取有关此错误的文档,请访问:element.html

这要归功于Page中的"browser.driver.findElement“语法。当我把它改为“元素”时,量角器就会正确地启动并运行,直到‘把我用5吴’步骤放在上面为止。在这里它抛出:

失败:在等待量角器与页面同步时出错:“窗口上找不到角”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-22 16:20:00

我在量角器启动后立即出错。

这是因为您初始化Page对象的地方-- Protractor在收集规范时很早就初始化了Page对象。您需要在beforeEach()中初始化页面对象。

代码语言:javascript
复制
describe('Damage selection - ', function() {
    var damagePage;

    beforeEach(function () {
       damagePage = new DamagePage();
    });

    // ...
});

或者,直接在it()内部

代码语言:javascript
复制
it('Put I on it with 5 WU', function() {
    var damagePage = new DamagePage();

    // Click I
    damagePage.leftMenuButtons.I.button.click();
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34950589

复制
相关文章

相似问题

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