2

我已经能够在java中工作了,但到目前为止我只能使用jasmine js打开网页。在java中,所有锚标记链接都可以保存在列表中,然后可以使用浏览器驱动程序对象来导航每个链接。但在jasmine js中,我无法将这些链接存储在数组中。以下是我试图做的:使用量角器测试页面上的所有链接

describe('demo', function() 
{ 
    it('mydemo', function() 
    { 
    browser.ignoreSynchronization = true; 
    browser.driver.get('https://www.google.co.in'); 
    var array = []; 
    array.push(browser.findElement(by.xpath("//a[@href]"))); 

    for(var i=0; i<array.length; i++) 
    { 
     expect(browser.navigate().to(array[i])); 
    } 
    } 
} 

新的浏览器窗口弹出,导航到谷歌,然后关闭。似乎有超时问题。使用browser.ignoreSynchronization = true,服务器忽略它作为角度应用程序,但仍然存在超时问题。有什么建议么?

回答

0

请参阅以下代码。

$$('a').map(function(link) { 
    return link.getAttribute("href").then(function (href) { 
     return href.replace(/https\:\/\/app\.perflectie\.nl\//g, localhost); 
    }); 
}).then(function(links) { 
    links.forEach(function(link) { 
     browser.get(link); 
     expect(browser.getCurrentUrl()).not.toContain('/Error/'); 
    }); 
}); 

欲了解更多信息,请访问以下链接。

Link 1

Link 2

希望这有助于。 :)

+0

导航到Google后浏览器关闭 – wolfsbane

0
it('link elements', function() { 
    browser.ignoreSynchronization = true; 
    browser.get('https://www.google.co.in'); 
    element.all(by.tagName('a')).each(function (elem) { // this is the important step, rest you can do whatever you want inside this 
     elem.getText().then(function (val) { 
      console.log('@@@@ : ' + val) 
     }) 
    }) 
}); 
1

要获得所有的链接,上ElementArrayFinder调用getAttribute。它会返回一个已经解决的Promise会给你所有的链接。 然后调用filter排除动态链接(href="javascript:...)和forEach遍历各个环节:

browser.ignoreSynchronization = true; 

$$("a[href]").getAttribute("href") 
    .then(links => links 
    .filter(link => !/^javascript/.test(link)) 
    .forEach(link => { 
     console.log(link); 
     browser.driver.get(link); 
    }) 
); 

另一种快捷方式是让所有与浏览器的单一调用执行脚本的链接:

browser.ignoreSynchronization = true; 

browser.driver.executeScript("return [].map.call(document.links, function(e){return e.href})") 
    .then(links => links 
    .filter(link => !/^javascript/.test(link)) 
    .forEach(link => { 
     console.log(link); 
     browser.driver.get(link); 
    }) 
); 
相关问题