【问题标题】:How to click on drop down with on-toggle property如何使用 on-toggle 属性单击下拉菜单
【发布时间】:2017-03-24 18:11:42
【问题描述】:
  <div ng-if="domainList.length>1" class="form-group ng-scope">
            <div class="col-sm-3">
                <label translate="ZillaMain.Authentication" class="ng-scope">Authentication</label>
            </div>
            <div class="col-sm-9">
                <label uib-dropdown="" keyboard-nav="true" on-toggle="toggled(open)" class="dropdown">
                    <a href="" tabindex="0" aria-label="" uib-dropdown-toggle="" class="dropdown-toggle" aria-haspopup="true" aria-expanded="false">
                        <!-- ngIf: authentication_domain -->
                        <!-- ngIf: !authentication_domain --><h3 ng-if="!authentication_domain" class="ng-scope">
                            <span translate="ZillaMain.Select" class="ng-scope">Select</span>
                            <i class="icon angle-down-icon"></i>
                        </h3><!-- end ngIf: !authentication_domain -->
                    </a>
  ------
  ------
  ------

使用上面提到的代码,我正在尝试在下拉列表中单击:

this.AuthDD = element(by.css('[on-toggle="toggled(open)"]'));

AuthDD.click();

但这并没有点击下拉菜单,我的测试也没有失败......我不确定它有什么问题。

我也尝试通过element(by.css('a.dropdown-toggle'));element(by.css('[translate="ZillaMain.Select"]')); 更改定位器,但它没有在下拉菜单中单击。

量角器中是否有任何不同的方式可以点击下拉菜单?

【问题讨论】:

    标签: javascript selenium testing automation protractor


    【解决方案1】:

    我会改进您定位下拉列表的方式(我认为您的定位器总体上太宽泛 - 在您的页面上下文中可能不会太宽泛,但我没有使用它)并指出a 元素的定位器通过适当的等待条件来强制执行可靠性:

    var authDropdown = element(by.xpath("//label[. = 'Authentication']/following::label[@class = 'dropdown']/a"));
    var EC = protractor.ExpectedConditions;
    
    browser.wait(EC.elementToBeClickable(authDropdown), 5000);
    authDropdown.click();
    

    我们之所以使用这种 XPath 表达式,是因为我们不仅要定位任何下拉切换链接,还要定位“身份验证”标签之后的那个。

    【讨论】:

    • 我尝试了上述更改,但下拉菜单仍然不可点击。
    • 不,我没有收到任何错误。此下拉列表位于我的应用程序测试的登录页面上,在authDropdown.click(); 步骤中没有失败,但由于未单击下拉列表且未从下拉列表中选择选项,因此未登录。
    • @soniasharma 好的,快速提问 - 如果你这样做 browser.executeScript("arguments[0].click();", authDropdown); 会发生什么?
    • 同样的问题下拉菜单没有被点击也不会登录。
    • 只是出于好奇我想知道即使元素没有与之关联的ng-click 属性,.click() 也会起作用。正如您在上面的代码中看到的,没有与下拉列表关联的ng-click 属性。这是下拉菜单没有被点击的原因吗?
    【解决方案2】:

    我通过进行以下更改来实现此功能:

     this.AuthDD = element(by.css('i.angle-down-icon'));
    
     AuthDD.click();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 2015-11-06
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 2012-11-03
      • 2021-03-10
      相关资源
      最近更新 更多