Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.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
Javascript 使用jasmine js将网页中的所有链接存储为json数据_Javascript_Json_Jasmine_Protractor_Karma Jasmine - Fatal编程技术网

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

Javascript 使用jasmine js将网页中的所有链接存储为json数据,javascript,json,jasmine,protractor,karma-jasmine,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("h

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

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

您只需将所有链接存储在一个数组中,并在需要时使用结果。看看下面的例子

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);
         })
    })
 });

我认为下面的解决方案应该适合你

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”标识元素,并将它们放入列表中

2) 对于每个元素,您都可以使用getAttribute('href')获得超链接


3) 用您拥有的测试数据列表断言超链接。

我尝试使用forEach、map,但似乎都不起作用。更新了我的答案!!从行
urlist=browser.driver.findElement(by.xpath(“//a[@href]”)中删除
getAttribute()
我很抱歉。我们需要使用
findelement
intead of
findelement
<代码>每个仅适用于阵列。茉莉花规范超时。重置WebDriver控制流。失败:未定义窗口