Как видно из заголовка, моя цель - проверить, есть ли какие-либо битые ссылки на данной странице.Под ссылками я подразумеваю атрибуты «href» тегов «a».В идеале я хотел бы нацелить некоторые определенные теги "a" (например, те, которые содержатся в определенном разделе страницы, например, в теге nav) ...
Справочная информация: я пытаюсь создать«полное» тестирование приложения для веб-сайта.В настоящее время я работаю над частью функциональных тестов.В этом контексте я хотел бы убедиться, что все ссылки на определенной странице отправят вас куда-нибудь (№ 404).Раньше я просто находил ссылку с помощью жестко закодированного селектора, нажимал на нее, проверял, что у целевой страницы есть заголовок ...
.waitForElementVisible("//div[@class='selectorForlink1']")
.waitForElementVisible("//div[@class='selectorForlink2']")
.click("//div[@class='selectorForButtonToClickOn']")
.waitForElementVisible("//ul[@class='selectorForLink3']/li[2]")
.click("//ul[@class='selectorForButtonToClickOnNo2']/li[2]")
Очевидно, это грязно / неэффективно.Я нашел сообщение на другую связанную тему, в котором предлагалось извлечь ссылки на странице, сохранить их (я думаю, в массивах), открыть каждую в потоке HTTP, проверить содержимое ответа.
ДляДля проверки ответа я бы использовал этот фрагмент кода (также найденный в другом связанном потоке):
const request = require('request');
request(myArrayOfLinkObject, (error, response, body) => {
browser.assert.equal(response.statusCode, 200);
});
Моя единственная проблема здесь заключается в том, чтобы поместить все элементы тега в массив (I ').я совсем не знаком с селекторами xpath или синтаксисом nightwach ...).последнее, что я безуспешно попробовал, это:
browser.elements('xpath', "//a[@class='Something']/@href", function (elements)
{
listofelements=elements;
})