2

私はこれをJavaで動かすことができましたが、これまではjasmine jsを使ってウェブページを開くことしかできませんでした。 Javaでは、すべてのアンカータグリンクをListに保存し、各リンクをブラウザドライバオブジェクトを使用してナビゲートすることができます。しかしjasmine jでは、それらのリンクを配列に格納することができません。ここに私がやろうとしていることがあります:分度器を使ってページ上のすべてのリンクをテストする

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

新しいブラウザウィンドウがポップアップし、googleに移動して閉じます。タイムアウトの問題があるようです。 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

、すべてのリンクを取得ElementArrayFindergetAttributeを呼び出すには。 Promiseを返します。これは一度解決すればすべてのリンクを提供します。 は、その後、各リンクを反復するために、動的リンク(href="javascript:...)とforEachを除外するfilterを呼び出します。

browser.ignoreSynchronization = true; 

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

別で迅速な方法は、ブラウザへの1回の呼び出しで実行するスクリプトを使用して、すべてのリンクを得ることです:

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); 
    }) 
); 
関連する問題