gpt4 book ai didi

javascript - 是否可以使用 for 循环进行 DRY Protractor 测试? *var coming undefined*

转载 作者:行者123 更新时间:2023-11-30 17:09:58 24 4
gpt4 key购买 nike

目标:我想在 it block 上进行循环,以测试元素文本是否匹配。

错误: 错误:使用定位器找不到元素:by.cssContainingText(".submenu li a", "undefined")

问题:如何编写 for 循环来测试多个列表项?此外,如何使 var title 对内部 it block

可见

对于这个例子:我有 2 个测试,我想通过一个循环来 DRY up下一个测试示例只是伪代码,在下面的测试中不起作用

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']);

仅供引用,这是相关的功能请求:

另见:

关于javascript - 是否可以使用 for 循环进行 DRY Protractor 测试? *var coming undefined*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27240657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com