【问题标题】:protractor create a table page object to process tables with different selectors?protractor 创建一个表格页面对象来处理具有不同选择器的表格?
【发布时间】:2015-11-11 22:47:09
【问题描述】:

我的第一篇文章。我正在使用带有 javascript/nodejs 的页面对象在量角器中编写 e2e 测试。阅读了许多关于此的 SO 帖子,阅读 Julie 的页面以及学习 ProtractorPageObjects

应用程序中的所有表都具有相同的结构。唯一的区别在于属性:data-row-type 可以是 10 个可能的值之一,例如“job”、“node”、“rack”等...

显然,我可以将字符串传递给方法并切换方法以构造正确的选择器。基于 ProTractorPageObjects 中的 cmets 我试图不那样写代码。我在这里是不是很傻,只是使用字符串并继续使用它,还是有办法创建这样的方法而无需传入字符串?

在 ProTractorPageObjects 的第 5 章中,columns.js 文件中提到不要使用传入字符串的模式来确定要查找的内容。

例如:

<div id="ee54a74e-17b8-4380-bbd8-2a5087bad7c9" class="tableRow escale-table-row-selected" data-row-type="ipAddress" data-qa-row-number="1">
            <div class="tableCell">
                <span class=""></span>                    ips-172-20-143-20-21
            </div>
            <div class="tableCell">
                <span class=""></span>                    UP
            </div>
            <div class="tableCell">
                <span class=""></span>                    Yes
            </div>

...

另一个表:

<div id="6f529383-c0f3-49b7-9ccb-c8db2b0c75a9" class="tableRow escale-table-row-selected" data-row-type="fileSystem" data-qa-row-number="0">
            <div class="tableCell">
                <span class=""></span>                    card-view<div><span class="fa fa-square success fileSystemIndicator"></span><span id="6f529383-c0f3-49b7-9ccb-c8db2b0c75a9-share" class="fa fa-square fileSystemIndicator success"></span><span id="6f529383-c0f3-49b7-9ccb-c8db2b0c75a9-accessRule" class="fa fa-square fileSystemIndicator success"></span></div>
            </div>
            <div class="tableCell">
                <span class=""></span>                    UP
            </div>
            <div class="tableCell">
                <span class=""></span>                    Yes
            </div>
 ......

【问题讨论】:

  • 你能发布一些你想要完成的例子吗?我不知道你在说什么:) columns.js 和 ProTractorPageObjects 的第 5 章在哪里...
  • @cvakiitho 我认为问题的格式使问题变得不清楚 - 没有正确显示 HTML 代码块 - 修复了这个问题。
  • @alecxe 那个,而且在打开之前没有喝早咖啡... :)

标签: javascript selenium protractor end-to-end pageobjects


【解决方案1】:

完全可以根据传递给方法的字符串值构造选择器,然后用于匹配div 元素的data-row-type 属性。 data-row-type 属性在您的情况下是一个“面向数据”的属性(好吧,将其与例如 style 属性进行比较 - 这个属性非常面向 UI/样式,并且始终是依赖定位器的糟糕选择on) 并唯一区分/定义页面上的页面块。

示例实现:

function getTable (tableType) {
    return element(by.css("div[data-row-type='" + tableType + "']"));
}

示例用法:

getTable("ipAddress");
getTable("fileSystem");

【讨论】:

  • 您是如何修复格式的?当我发布时,我觉得这很奇怪,但作为一个新手,我认为这可能是“正常的”。应该检查真实的帖子。谢谢你这样做。
  • 射击,误击cr。这是我想要做的。对于几乎所有的 gui,我需要获取显示的内容,然后将其与 cli 返回的内容进行比较。所以大多数情况下,我正在显示一个通常有两个表格的页面。该资源的工作表....例如文件系统。以及显示已创建文件系统的表格。所以我想获取所有表格文本条目和表格/列标题和一些彩色框。然后,我将每个“行”与 cli 返回的内容进行比较。承诺似乎使这样的任务比他们应该做的要困难得多。评论帮助@alecxe
猜你喜欢
  • 2020-05-09
  • 2012-05-14
  • 2022-01-19
  • 1970-01-01
  • 2012-07-16
  • 2013-06-20
  • 1970-01-01
  • 2021-06-21
  • 2016-03-23
相关资源
最近更新 更多