使用jasmine js将所有链接存储在网页中作为json数据

时间:2016-11-15 12:28:55

标签: javascript json jasmine protractor karma-jasmine

我希望将网页中的所有链接存储为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);
    });
   });

有没有办法将它存储在地图或任何其他集合中?

2 个答案:

答案 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)使用您拥有的测试数据列表断开超链接。