我希望将网页中的所有链接存储为json数据,然后使用jasmine js检查它们的有效性。但到目前为止,我没有任何运气,因为我找不到办法。
describe('savejson', function()
{
var map = new Map();
it('save', function(myarg)
{
browser.ignoreSynchronization = true;
browser.driver.get("https://www.google.co.in");
browser.driver.findElement(by.xpath("//input[@type='text']")).sendKeys("java");
browser.driver.findElement(by.xpath("//button[@name='btnG']")).click();
map = browser.driver.findElement(by.xpath("//a[@href]"));
console.log(map);
});
});
有没有办法将它存储在地图或任何其他集合中?
答案 0 :(得分:2)
您可以将所有链接存储在一个数组中,并在需要时使用结果。请看下面的例子。
describe('savejson', function()
{
var urlList=[];
it('save', function(myarg)
{
browser.ignoreSynchronization = true;
browser.driver.get("https://www.google.co.in");
browser.driver.findElement(by.xpath("//input[@type='text']")).sendKeys("java");
browser.driver.findElement(by.xpath("//button[@name='btnG']")).click();
urlList = browser.driver.findElements(by.xpath("//a[@href]"));
});
it('Should validate stored links',function(){
urlList.each(function(linkElement,index){
linkElement.click();
browser.sleep(1000);
expect(browser.driver.getCurrentUrl()).toContain('some URL'); // do whatever you need to assert
browser.navigate().back();
browser.sleep(1000);
})
})
});
答案 1 :(得分:0)
我认为下面的解决方案应该适合你。
describe('savejson', function() {
it('save', function() {
browser.driver.get("https://www.google.co.in");
browser.driver.findElement(by.xpath("//input[@type='text']")).sendKeys("java");
browser.driver.findElement(by.xpath("//button[@name='btnG']")).click();
var linksList = [];
linksList = browser.driver.findElements(by.tagName("a"));
var testDataLInks = ["www.www.com", "sss.sss.sss"];
linksList.each(function(link) {
link.getAttribute('href').then(function(hyperlink) {
console.log(hyperlink);
expect(testDataLInks).toContain(hyperlink);
});
});
});
});
1)首先识别带有标签'a'的elemet,并将它们放入列表中。
2)对于每个元素,您可以使用getAttribute('href')获取超链接。
3)使用您拥有的测试数据列表断开超链接。