通过 class 或量角器中的中继器搜索值?
Search for a value by class or repeater in protractor?
我有一个包含多列和多行的 table,这些行在转发器中并且每一行都具有相同的 class。基本上我在量角器中自动执行搜索功能测试,我想看看所搜索的值是否存在于给出的结果中。所以基本上我需要进入每个可见的 class 或转发器并检查值?如果该值存在或包含在任何元素中,则测试通过,否则测试失败。
如果您要问选择什么定位器 - "by repeater" 或 "by class",一般来说,选择将取决于转发器和 class 你有空。
例如,如果您有 item in items
转发器和 product
class,最好使用 product
class,因为 item in items
过于通用的转发器,目前或将来可能无法在页面上区分(这可能有一天会让人感到惊讶,并可能导致调试过程中出现一些问题)。
或者相反的例子,如果你有 product in products
转发器和 col-md-1
class,那么 "by repeater" 定位器将是首选,因为 col-md-1
class 是 UI- 面向布局的 class,不包含或带来任何 "data" 特定信息;而且以后改的可能性更大
另一点是 "by repeater" 定位器会使您的测试更加依赖于 AngularJS,但是 "by class" 方法是更通用一点,并且不知道应用程序是基于什么构建的。
假设您的搜索字符串是 "SearchKey" 并且结果显示在如下元素列表中
<li class="file" ng-repeat="result in results" ng-class="{blahblah}">
<li class="file" ng-repeat="result in results" ng-class="{blahblah}">
<li class="file" ng-repeat="result in results" ng-class="{blahblah}">
你的测试用例应该有如下断言
var xpathExp = "//li[contains(.,'" + SearchKey + "')]"
expect(element(by.xpath(xpathExp).isDisplayed()).to.eventually.be.true;
我有一个包含多列和多行的 table,这些行在转发器中并且每一行都具有相同的 class。基本上我在量角器中自动执行搜索功能测试,我想看看所搜索的值是否存在于给出的结果中。所以基本上我需要进入每个可见的 class 或转发器并检查值?如果该值存在或包含在任何元素中,则测试通过,否则测试失败。
如果您要问选择什么定位器 - "by repeater" 或 "by class",一般来说,选择将取决于转发器和 class 你有空。
例如,如果您有 item in items
转发器和 product
class,最好使用 product
class,因为 item in items
过于通用的转发器,目前或将来可能无法在页面上区分(这可能有一天会让人感到惊讶,并可能导致调试过程中出现一些问题)。
或者相反的例子,如果你有 product in products
转发器和 col-md-1
class,那么 "by repeater" 定位器将是首选,因为 col-md-1
class 是 UI- 面向布局的 class,不包含或带来任何 "data" 特定信息;而且以后改的可能性更大
另一点是 "by repeater" 定位器会使您的测试更加依赖于 AngularJS,但是 "by class" 方法是更通用一点,并且不知道应用程序是基于什么构建的。
假设您的搜索字符串是 "SearchKey" 并且结果显示在如下元素列表中
<li class="file" ng-repeat="result in results" ng-class="{blahblah}">
<li class="file" ng-repeat="result in results" ng-class="{blahblah}">
<li class="file" ng-repeat="result in results" ng-class="{blahblah}">
你的测试用例应该有如下断言
var xpathExp = "//li[contains(.,'" + SearchKey + "')]"
expect(element(by.xpath(xpathExp).isDisplayed()).to.eventually.be.true;