Я использую жасмин вместе с селеном.
Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно запустить жасмин spe c для получения списка элементов. Чтобы сделать это, я должен асинхронно выбрать элемент с селеном, а затем пройтись по всем элементам, для которых выполняется тест жасмина.
Проблема в том, что $anchors
в приведенном ниже коде равно undefined
, когда начинаются тесты выполнить. Это означает, что Жасмин пропустит выполнение тестов в течение l oop.
Есть идеи, как обойти это?
Код ниже.
describe('[Footer Social Icons]', () => {
const driver: WebDriver = (jasmine.getEnv() as any).driver;
(jasmine as any).DEFAULT_TIMEOUT_INTERVAL = 60000;
let $component: WebElement;
let $anchors: WebElement[];
beforeAll(async () => {
$component = await $(By.css(`.footer-social-icons`), driver);
$anchors = await $$(By.css('a'), $component);
});
describe('GIVEN that the page has loaded', () => {
const test_target_blank = ($a: WebElement) => {
it('THEN it should contain a list of anchors with target="_blank"', async () => {
expect(await $a.getAttribute('target')).toBe('_blank');
});
};
const test_sr_only = ($a: WebElement) => {
it('THEN it should have an sr-only text inside each anchor', async () => {
expect(await $(By.css('.sr-only'), $a)).toBeTruthy();
});
};
for (const $a of $anchors) {
test_sr_only($a);
test_target_blank($a);
}
});
});