你可以链接属性吗?

时间:2015-11-17 15:51:49

标签: angularjs selenium-webdriver automation protractor

我有一个自动化测试,我已经切换了大多数属性的变量,这对我来说非常棒,除非我需要链接一些东西。以下是我希望它看起来像的例子:

var test = module.exports = {
  outerElement: element(by.cssContainingText('some.div' 'A name'),
  innerElement: $('something.else'),
  clickOnaName: function () {
    this.outerElement.this.innerElement.click();
    },

但是我必须使用这段代码,因为链接不能像我使用它那样工作:

var outerElement = element(by.cssContainingText('some.div'
      'A name');
    var innerElement = $('something.else');

    var test = module.exports = {
        clickOnaName: function() {
          outerElement.innerElement.click();
        },

我有没有办法做链,或者我应该把这些元素留作变量

1 个答案:

答案 0 :(得分:3)

请告诉我这是否有帮助!

您可以使用.element(el.locator())扩展元素。您可以一次使用多个选择器。你也可以点击元素数组。

请记住,这种量角器选择器的链接与css空间子选择器相同,而不是>选择。 即$('.parent').$('.child')将选择与css文件.parent .child中相同的元素,获取所有子项,而不仅仅是直接子项。

module.exports = function(){
    this.parent = $('.parent');
    this.child = $('.child');
    this.childOfParent = parent.element(child.locator());

    this.directParentChild = $('.parent').$('.child');

    this.parentArray = $$('.parents');
    this.child = $('.child');
    this.children = parentArray.get(2).element(child.locator());
}

添加点击等应该非常简单,例如page.childOfParent.click