【问题标题】:Getting to a nested element via protractor通过量角器访问嵌套元素
【发布时间】:2015-01-14 15:59:47
【问题描述】:

Web 应用程序 (Ember) 将页面呈现为一堆 div。表的内容是动态的。有没有办法以编程方式遍历表格,阅读元素的详细信息并单击超链接? Firebug 将我呈现的页面报告为

<div id="ember7384" class="ember-view ember-table-table-container ember-table-fixed-table-container ember-table-header-container" style="height:30px;width:1860px;">
    <script id="metamorph-357-end" type="text/x-placeholder">
    <div id="ember7428" class="ember-view ember-table-table-container ember-table-body-container antiscroll-wrap" style="height:300px;width:1860px;">
    <div class="antiscroll-box">
    <div class="antiscroll-inner" style="width: 1860px; height: 300px;">
    <div class="ember-table-table-scrollable-wrapper">
    <script id="metamorph-376-start" type="text/x-placeholder">
   <script id="metamorph-376-end" type="text/x-placeholder">
    <div id="ember7430" class="ember-view lazy-list-container ember-table-table-block ember-table-right-table-block" style="height:300px;width:1860px;">
    <div id="ember7435" class="ember-view ember-table-table-row" style="width:1860px;top:0px;height:30px;">
    <div id="ember7447" class="ember-view" style="width:1860px;">
    <div id="ember7448" class="ember-view ember-table-cell text-align-left" style="width:206px;">
    <a id="ember7457" class="ember-view ember-table-content" href="#/dag/dag_1420819850710_0049_1/vertices">
    <script id="metamorph-378-start" type="text/x-placeholder">
    </script>
    MRRSleepJob
    <script id="metamorph-378-end" type="text/x-placeholder">
    </script>
    </a>
    </div>
    <div id="ember7449" class="ember-view ember-table-cell text-align-left" style="width:206px;">
    <span class="ember-table-content">
    <script id="metamorph-379-start" type="text/x-placeholder">
    </script>
dag_1420819850710_0049_1
    <script id="metamorph-379-end" type="text/x-placeholder">
    </script>
    </span>
    </div>
    <div id="ember7450" class="ember-view ember-table-cell text-align-left" style="width:206px;">
    <div id="ember7451" class="ember-view ember-table-cell text-align-left" style="width:206px;">
    <div id="ember7452" class="ember-view ember-table-cell text-align-left" style="width:206px;">
    <div id="ember7453" class="ember-view ember-table-cell text-align-left" style="width:206px;">
    <div id="ember7454" class="ember-view ember-table-cell text-align-left" style="width:206px;">
    <div id="ember7455" class="ember-view ember-table-cell text-align-left" style="width:206px;">
    <div id="ember7456" class="ember-view ember-table-cell text-align-left" style="width:206px;">
    </div>
    </div>
<div id="ember7436" class="ember-view ember-table
</snip>

如何让我的量角器脚本点击 MRRSleepJob 链接(例如)?ID 不是静态的,可以更改。连名字 MRRSleepJob 都可以改?有没有办法在这里使用正则表达式?可以让我在这里解析迷宫般的 div 并在遇到元素时读取元素的详细信息……然后可能对它们进行操作,例如如果它是超链接则单击它或仅读取名称等?

【问题讨论】:

    标签: angularjs testing protractor end-to-end


    【解决方案1】:

    你可以通过id找到元素:

    element(by.id('ember7457')).click();
    

    或者,通过链接文本:

    element(by.linkText('MRRSleepJob')).click();
    

    或者,通过 css 依赖类名:

    element(by.css('div.ember-view a.ember-table-content')).click();
    

    或者。通过 'findElements' 将返回匹配元素的数组:

    browser.findElements(protractor.By.tagName('a')).then(function(elems) {
    
        // Access elements like this
        elems[1];
    });
    

    【讨论】:

    • ID 不断变化。有没有办法使用正则表达式?
    • 亚历克,谢谢。但是如果linkText 名称和id 是动态的呢?有没有办法以编程方式循环遍历表格,查找元素的详细信息,然后如果它是超链接则单击它?
    • @user3062327 好的,但是什么没有改变? :)
    • Alec,有没有办法通过搜索类名来获取元素集合。然后“探索”元素以找出它是否包含超文本或仅包含一些数据等。类名是重复的并且不会改变。
    • @user3062327 好的,提供第三个选项。
    猜你喜欢
    • 2016-09-17
    • 2021-07-09
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    相关资源
    最近更新 更多