如何选择不带ng-repeat元素的文本的“编辑”按钮?

时间:2019-01-22 10:55:50

标签: angularjs protractor

我有一个“表单”构建器,其中我从ng-repeat中选择字段类型,并且该元素出现在画布中。我想单击画布上该元素的“编辑”按钮。单击编辑按钮将显示其他几个要输入的字段。但是所有元素都在ng-repeat中,并且按钮没有id,name,model。 enter image description here

enter image description here

3 个答案:

答案 0 :(得分:0)

我认为这种方法应该可以解决问题

function editBuilder(builderName) {
  // select title of a builder which is span
  const title = element(by.cssContainingText('.h4', builderName));

  // get root form element (parent element)
  const root = title.element(by.xpath('..'));

  // get edit button 
  const editButton = root.$('[ng-click="editFields($index)"]')

  // click or something
  return editButton.click(); 
}

然后您可以像这样调用此函数:

editBuilder('Text Field').then(...);

答案 1 :(得分:0)

我只能通过使用以下代码来选择第一个ng-repeat元素:

element(by.xpath("//button[@class='md-icon-button md-button md-ink-ripple md-default-theme']")).click(); element(by.name("label")).clear().sendKeys("admin");

答案 2 :(得分:0)

如果有多个编辑按钮,则可以按以下方式找到它们:

element.all(by.css('.icon.icon-pencil.s20')).get(<index>);

索引从0开始
如果只有一个,则:

element(by.css('.icon.icon-pencil.s20'));