是否可以使用 for 循环进行 DRY 量角器测试?*VaR 即将出现未定义*
Is it possible to use a for loop for DRY protractor test? *var coming up undefined*
目标:我想在it
块上做一个循环,测试元素文本是否匹配。
错误:Error: No element found using locator: by.cssContainingText(".submenu li a", "undefined")
问:如何编写 for 循环来测试多个列表项? 此外,我如何使var title
对内在it block
可见
对于此示例:我有 2 个测试,我想通过循环 DRY下一个测试示例只是下面的伪代码不起作用的工作测试。
var config = require('../../protractor.conf.js').config;
describe('this Homepage Body Tests', function(){
browser.driver.get(config.homepageUrl);
describe('sub navigation functionality', function () {
//creates teh array of strings for this sample
var title = ['find a store', 'clinic'];
for(var i = 0; i < title.length; i++){
it("should open find a" + title[i] + "page", function(){
browser.driver.sleep(2000);
browser.ignoreSynchronization = true;
var link = element(by.cssContainingText('.submenu li a', title[i]));
expect(link.getText()).toEqual(title[i]);
});
};
});
});
.HTML:
<div class="submenu">
<ul>
<li><a >find a store</a>
</li>
<li><a>clinic</a>
</li>
</ul>
</div>
工作测试示例:
it("should open find a store page", function(){
browser.driver.sleep(2000);
browser.ignoreSynchronization = true;
var title = 'find a store';
var link = element(by.cssContainingText('.submenu li a', title));
expect(link.getText()).toEqual(title);
});
it("should open find a clinic page", function(){
browser.driver.sleep(2000);
browser.ignoreSynchronization = true;
var title = 'clinic';
var link = element(by.cssContainingText('.submenu li a', title));
expect(link.getText()).toEqual(title);
});
更新:
it("should open find a store page", function(){
browser.driver.sleep(2000);
browser.ignoreSynchronization = true;
var string = 'find a store';
var main = '.main';
var link = element(by.cssContainingText('.submenu li a', string));
expect(link.getText()).toEqual(string);
//I WANT OT CLICK ON THAT TOO!
link.click().then(function() {
browser.driver.sleep(3000);
var title = element(by.cssContainingText(main, string));
expect(title.getText()).toBe(string);
});
});
这就是
element.all()
+ map()
会有所帮助的地方:
var titles = element.all(by.css('.submenu li a')).map(function (elm) {
return elm.getText();
});
expect(titles).toBeArrayOfStrings();
expect(titles).toEqual(['find a store', 'clinic']);
仅供参考,这是相关的功能请求:
- 将 map(( 函数添加到 element.all
另请参阅:
- 量角器 - 如何将一个承诺数组的结果放入另一个数组中
- AngularJS + 量角器对中继器中的所有行值求和
相关文章:
- 为什么JavaScript抛出'未捕获的ReferenceError:var未定义'定义var时
- Google Script var获取未定义的值
- 断言var集通过<输入ng模型>不是未定义的
- Javascript requestData未定义,尽管为JSON设置了var
- 使用 Javascript/JQuery 并在页面加载时获取未定义的 var
- winJS 从函数未定义返回 var
- 为什么我需要将“var value = val;”更改为“this.value = val;”,这样我就不会收到“未定义
- JavaScript,jquery中未定义的VAR的问题.如何
- 火狐插件未定义的 var 来自框架
- 未初始化的 var 不应该总是未定义类型
- 是否可以使用 for 循环进行 DRY 量角器测试?*VaR 即将出现未定义*
- 未捕获的错误未定义不是函数 var ajax_url = $('#ajax_url').val();
- IE8 javascript/jQuery中未定义的var
- JavaScript范围问题,嵌套函数中的var访问未定义
- javascript:var仅在IE中未定义
- 无法读取属性'未定义'未定义,但I'我确信var是有效的
- JSLint-'var未定义'由外部脚本文件引起的错误
- Javascript Sharepoint preaveaction总是得到var未定义
- 未捕获的ReferenceError: {var}未定义.文件是单独创建的
- 如何解决一个ReferenceError在节点js (var未定义)