如何使用on-toggle属性

时间:2016-11-10 16:19:00

标签: javascript selenium testing automation protractor

  <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"]'));但它不会在下拉列表中显示。

量角器中有没有可用的方法来点击下拉列表?

2 个答案:

答案 0 :(得分: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表达式,因为我们不仅要定位任何下拉切换链接,而是定位在“身份验证”标签之后。

答案 1 :(得分:0)

我通过进行以下更改来实现这一目标:

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

 AuthDD.click();