【问题标题】:Protractor - Element Not Visible when selecting Drop down.(but visible when selected manually)量角器 - 选择下拉时元素不可见。(但手动选择时可见)
【发布时间】:2016-01-27 21:30:03
【问题描述】:

我已经搜索了 2 天,但我无法找到解决方案,我希望选择一个下拉列表。当我使用一些 element.all css 定位器单击下拉菜单时,它会单击下拉菜单(下拉菜单打开但显示错误)。所以我尝试使用 linkText 打开下拉菜单(完美打开)。但在那之后,我无法在下拉菜单中选择该选项。 (显示元素不可见)。我也无法通过链接文本选择选项。详情如下

<div class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-right" style="margin-right:0px">
 <li>
    <div uib-dropdown="" style="margin-right: 5px;" class="dropdown">
                                Tenant
    <a href="" id="simple-dropdown" uib-dropdown-toggle="" class="dropdown-toggle" aria-haspopup="true" aria-expanded="false">
    <span class="breadcrumb ng-binding" style="padding-bottom: 2px; padding-top: 2px;">cust1</span>
    </a>
      <ul class="uib-dropdown-menu dropdown-menu" role="menu" aria-labelledby="single-button">
    <!-- ngRepeat: tenant in tenantList --><li ng-repeat="tenant in tenantList" class="ng-scope">
    <a ng-click="selectTenant(0)" href="">
    <span ng-show="selectedTenant.Identity == tenant.Identity" class="glyphicon glyphicon-ok"></span>
    <span ng-show="selectedTenant.Identity != tenant.Identity" style="margin-left: 17px" class="ng-hide"></span>
    <span class="ng-binding">cust1</span>
    </a>
    </li><!-- end ngRepeat: tenant in tenantList --><li ng-repeat="tenant in tenantList" class="ng-scope">
    <a ng-click="selectTenant(1)" href="">
    <span ng-show="selectedTenant.Identity == tenant.Identity" class="glyphicon glyphicon-ok ng-hide"></span>
    <span ng-show="selectedTenant.Identity != tenant.Identity" style="margin-left: 17px" class=""></span>
    <span class="ng-binding">NewTenant1</span>
     </a>
    </li><!-- end ngRepeat: tenant in tenantList --><li ng-repeat="tenant in tenantList" class="ng-scope">
    <a ng-click="selectTenant(2)" href="">
    <span ng-show="selectedTenant.Identity == tenant.Identity" class="glyphicon glyphicon-ok ng-hide"></span>
    <span ng-show="selectedTenant.Identity != tenant.Identity" style="margin-left: 17px" class=""></span>
    <span class="ng-binding">cust2</span>
    </a>
    </li><!-- end ngRepeat: tenant in tenantList -->
    </ul>
    </div> 

我尝试通过以下方式进行选择,但我无法使其工作。

  1. 等待元素变得可见。
  2. 链接文本
  3. 可供选择的选项。 (通过中继器名称作为选项) 请帮帮我

【问题讨论】:

  • 甚至尝试通过查找子元素。 var el = element(by.binding('selectedTenant.ParentOwnerName')).element(by.css('a[ng-click="selectTenant(2)"]')); el.click();
  • 您是否尝试单击anchor 元素而不是list 元素?如果字母不能以任何方式识别,您也可以使用 sendKeys() 函数传递字母。谢谢
  • 我对量角器只有 2-3 个月大。如果我错了,请纠正我。这是通过.css('[ng-click‌​="selectTenant(2)"]') 来的锚元素吗?如果是,那么我尝试了这个。是的,我也试过 sendkeys。我不知道如何传递字母。请更准确地解释
  • 您的网站在公共领域,我们可以访问吗?我不确定为什么您无法单击下拉列表,但是 stackoverflow 中有很多答案显示了如何从下拉列表中选择一个值。他们都没有工作?这里有几个 - stackoverflow.com/questions/19599450/… 或 stackoverflow.com/questions/22895281/… 等等。如果它们都不起作用,请告诉我。谢谢

标签: automation protractor angularjs-e2e


【解决方案1】:

元素(by.partialLinkText('cust2'));我不知道为什么链接文本不工作,但部分链接文本工作。感谢回复。

【讨论】:

    【解决方案2】:

    这就够了吗?我用它来识别包含特定标签值的下拉元素...

    this.clickDropChoice = function(dropdown, optionChoice) {
        dropdown.element(by.cssContainingText('option', optionChoice)).click()
    };
    

    【讨论】:

    • ReferenceError: 属性未定义。 wats 用于在前面添加属性。我还需要做什么吗? Common.Tenant.click(); browser.sleep(4000); attribute.element(by.cssContainingText('div.dropdown', "cust2")).click(); browser.sleep(4000);
    • 我的应用程序,它来自一个帮助文件,我忘了提及我使用的参数......基本上在我的代码中我想点击一个下拉列表我只是调用这个帮助文件函数:)我已经对其进行了编辑以包含适当的参数,并尝试更清楚地标记它们:)
    • 嗨@TesterPhi 我需要传递带有元素的下拉参数吗??你能解释清楚一点吗?对不起
    • dropdown 是您的下拉菜单标识符,optionChoice 是您要选择的。您的标识符将是下拉列表的 id: element(by.id('simple-dropdown')); optionchoice 将是您要单击的选项选项中显示的文本
    • 对不起,你能看看下面的代码吗?这是我所做的,但测试通过但没有选择下拉菜单。 'var test = element(by.id('simple-dropdown')); this.clickDropChoice = function(test, cust2) { dropdown.element(by.cssContainingText('option', cust2)).click() };' @TesterPhi 我做错什么了吗。仅供参考,clickDropChoice 似乎未使用。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签