如何使用实习生在阴影dom中单击并键入元素

时间:2017-04-04 05:15:51

标签: shadow-dom intern leadfoot

我有一个Google Polymer Project,我正在尝试使用Intern实现功能测试,可在此处找到:

  

https://theintern.github.io/

我正在尝试测试的代码位于Shadow DOM中,因为该页面使用了各种Web组件。测试的主要目标是填写表格并发布数据。代码的结构如下:

<app>
#shadow-root
  <login-form>
  #shadow-root
    <card>
    #shadow-root
       <paper-input>
       #shadow-root
         <iron-input>
           email
         </iron-input>
       </paper-input>
       <paper-input>
       #shadow-root
         <iron-input>
           password
         </iron-input>
       </paper-input>
       <paper-button>
           submit
       </paper-button>
    </card>
  </login-form>
</app>

“#shadow-root”表示代码在浏览器中的表示方式。

我用过

document.querySelector('app').document.querySelector('login-form')...etc

访问特定元素,但无法找到单击元素的方法,键入字段,并在完成后单击提交按钮。在实习生有什么办法吗?

1 个答案:

答案 0 :(得分:0)

我认为你应该看看intern-examples知道如何用Intern编写功能测试

例如,here是您应该如何编写测试(打开网址,按ID查找元素,点击元素,输入内容......)

define([
  'intern!object',
  'intern/chai!assert',
  'require'
], function (registerSuite, assert, require) {
  var url = '../../index.html';

  registerSuite({
    name: 'Todo (functional)',

    'submit form': function () {
      return this.remote
        .get(require.toUrl(url))
        .findById('new-todo')
        .click()
        .pressKeys('Task 1')
        .pressKeys('\n')
        .pressKeys('Task 2')
        .pressKeys('\n')
        .pressKeys('Task 3')
        .getProperty('value')
        .then(function (val) {
          assert.ok(val.indexOf('Task 3') > -1, 'Task 3 should remain in the new todo');
        });
    }
  });
});