Цель: я хочу сделать цикл по блоку it
, который проверяет соответствие текста элемента.
Ошибка: Error: No element found using locator: by.cssContainingText(".submenu li a", "undefined")
Вопрос. Как написать цикл for для проверки нескольких элементов списка? Кроме того, как мне сделать var title
видимым для внутреннего it block
Для этого примера: у меня есть 2 теста, которые я хочу СУШИТЬ с помощью цикла следующий пример теста - это просто псевдокод, который не работает, рабочий тест ниже.
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);
});
});