如何添加量角器定位器以在此菜单中添加单击功能

时间:2016-04-30 12:23:24

标签: protractor

我有两个菜单' Setup'和' Reports'使用子菜单' admin users',' Reports dashboard',' partner dashboard',' partner relationship'等标有红色的。

enter image description here

我想导航或点击使用量角器定位器但无法找到如何选择这些没有id和常用CSS的菜单。我想要这样的东西

var userTypes = element.all(by.repeater('t in user_userTypes'));</br>
userTypes.get(2).click()

2 个答案:

答案 0 :(得分:1)

定义一个方法并传递'hrefValue',按锚标记过滤。

 var clickParticular = function(hrefValue){
          element.all(by.tagName('a')).filter(function(element, index) {
              return element.getAttribute('href').then(function (text) {
                  return text === hrefValue;
              });
          }).then(function(filteredElements) {
              filteredElements[0].click().then(function() {
              });
          });
      }

答案 1 :(得分:1)

从我看到的,这些元素是导航菜单项,SetupReports是高级菜单,Admin UsersReports DashboardPartner dashboardPartner RelationshipGrading Data是子菜单。我想,要打开一个子菜单,你应该点击相应的菜单。

让我们制作一个可重复使用的功能,接受菜单标签和所需的子菜单标签并使用by.repeater()定位器filtering菜单按文字显示

function selectMenu(menuLabel, submenuLabel) {
    var menu = element.all(by.repeater("mi in menuItems")).filter(function (menu) {
        return menu.all(by.tagName("a")).first().getText().then(function (text) {
            return text.indexOf(menuLabel) === 0;
        });
    }).first();

    menu.click();  // open up menu

    var submenu = menu.all(by.repeater("s in mi.subMenuItems")).filter(function (submenu) {
        return submenu.all(by.tagName("a")).first().getText().then(function (text) {
            return text.indexOf(submenuLabel) === 0;
        });
    }).first();

    submenu.click();  // select submenu
}

用法样本:

selectMenu("Setup", "Admin Users");
selectMenu("Reports", "Reports Dashboard");