Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath 使用nightwatch检查页面上的断开链接_Xpath_Css Selectors_Nightwatch.js - Fatal编程技术网

Xpath 使用nightwatch检查页面上的断开链接

Xpath 使用nightwatch检查页面上的断开链接,xpath,css-selectors,nightwatch.js,Xpath,Css Selectors,Nightwatch.js,正如标题所说,我的目标是检查给定页面上是否有任何断开的链接。所谓链接,我指的是“a”标记的“href”属性。理想情况下,我希望针对一些特定的“a”标记(例如页面特定部分中包含的标记,例如nav标记中包含的标记…) 背景:我正在尝试为一个网站构建一个“完整”的测试应用程序。我目前正在做功能测试部分。 在这种情况下,我希望确保特定页面中的所有链接都会将您发送到某个位置(no 404)。 我过去所做的,就是使用硬编码选择器查找链接,单击它,检查登录页是否有标题 .waitForElementVisib

正如标题所说,我的目标是检查给定页面上是否有任何断开的链接。所谓链接,我指的是“a”标记的“href”属性。理想情况下,我希望针对一些特定的“a”标记(例如页面特定部分中包含的标记,例如nav标记中包含的标记…)

背景:我正在尝试为一个网站构建一个“完整”的测试应用程序。我目前正在做功能测试部分。 在这种情况下,我希望确保特定页面中的所有链接都会将您发送到某个位置(no 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流中打开每个链接,验证响应内容

为了测试响应,我将使用这段代码(也可以在另一个相关线程上找到):

这里我唯一的问题是将所有的标记元素都放在一个数组中(我对xpath选择器或nightwach语法一点都不熟悉…)。我最后一次尝试失败的是:

browser.elements('xpath', "//a[@class='Something']/@href", function (elements) 
{
    listofelements=elements;
})

好吧,我找到了对我有用的东西,也许对其他人有用。。。这就是它(带有随机css选择器):

browser.elements('css选择器',“导航a”,函数(linksOfThePage)
{
numberOfLinks=linksOfThePage.value.length;
对于(var x=0;x{
browser.assert.equal(response.statusCode,200);
});
});
}
})

这可能不是最干净的方式,但应该做的工作。。。至少对我来说是这样的好吧,我发现了一些对我有用的东西,也许对其他人有用。。。这就是它(带有随机css选择器):

browser.elements('css选择器',“导航a”,函数(linksOfThePage)
{
numberOfLinks=linksOfThePage.value.length;
对于(var x=0;x{
browser.assert.equal(response.statusCode,200);
});
});
}
})
这可能不是最干净的方式,但应该做的工作。。。至少对我来说是这样

browser.elements('xpath', "//a[@class='Something']/@href", function (elements) 
{
    listofelements=elements;
})
browser.elements('css selector', "nav a", function (linksOfThePage)
      {
        numberOfLinks=linksOfThePage.value.length;
        for (var x = 0; x < numberOfLinks; x++){ 
          browser.elementIdAttribute(linksOfThePage.value[x].ELEMENT, "href", function(links) { 
            console.log(links.value);
            request(links.value, (error, response, body) => {
                browser.assert.equal(response.statusCode, 200);
              });
          });
        }
      })