2016-05-23 33 views
0

私はこのコードを持っています。ページの下部にあるすべてのリンクを参照してください。それらをクリックすると、開かれたURLが正しいかどうか確認したいと思います。 再帰呼び出しが早すぎると思います。別の問題は、そのリンクが特定のURLに属していることを知らせるためにどうすればよいかです。あなたはago.Iページオ​​ブジェクトをお勧めします。この日で立ち往生していたようループが正常に動作していません - 夜間

function links(browser, total_links) { 
    if (total_links <= 0) { 
     browser.end(); 
     return; 
    } 

    console.log("Number of links: " + total_links); 
    console.log('Flag1'); 

     browser 
      .waitForElementVisible('.bottom .socal>span:nth-child(' + total_links + ')', 1000, function() { 

      console.log('Flag2'); 
      browser.execute('scrollIntoView(alignToBottom)') 

      .moveToElement('.bottom .socal>span:nth-child(' + total_links + ')', 3, 3) 
       .pause(3000) 
       .click('.bottom .socal>span:nth-child(' + total_links + ') a', function() { 
        console.log('Flag3'); 
        browser.keys(['\uE006']) 
        // .assert.urlContains('facebook') 
        //.assert.urlEquals('https://www.facebook.com/unitel.ao/?fref=ts') 
          .window_handles(function (result) { 
          console.log('Flag4'); 
          browser.assert.equal(result.value.length, 2, 'There should be two windows open.'); 
          var handle_1 = result.value[0]; 
          var handle_2 = result.value[1]; 
          browser.switchWindow(handle_2, function() { 
           browser.closeWindow() 
            .switchWindow(handle_1, function() { 
             total_links = total_links - 1; 
             links(browser, total_links); 
            }); 
          }); 
         }); 

        console.log('Flag5'); 
       }); 
      console.log('Flag6'); 
     }); 
} 

module.exports = { 
    'Social links': function (browser) { 
     var total_links; 

     browser 
      .url('http://m.unitel.ao/fit/') 
      .execute(function() { 
        return document.querySelectorAll("ul.navbar-nav>li").length; 
       }, 
       function (tags) { 
        total_links = tags.value; 
        links(browser, total_links); 

       }); 

     // .end(); 
    } 
}; 
+0

あまりにも多くのコードと明確に問題の無い関連性を言って申し訳ありません。 – nullpointer

答えて

0

Humhが、それはそう、それはあなたが将来的にCSSを変更するにはハードコードと簡単に離れ役立ちます。

module.exports = { 
    url: function() { 
    return 'http://m.unitel.ao/fit/'; 
    }, 
    commands: [{ 
    getUrl: function(n) { 
     if (n === 3) { 
     return 'youtube.com/user/tvUNITEL'; 
     } 
     if (n === 1) { 
     return 'facebook.com/unitel.ao/?fref=ts'; 
     } 
     if (n === 2) { 
     return 'instagram.com/unitelangola/'; 
     } 
     if (n === 4) { 
     return 'plus.google.com/110849312028181626033/posts'; 
     } 
    } 
    }], 
    elements: { 
    facebook: { 
     selector: '.bottom .socal>span:nth-child(1)', 
    }, 
    instagram: { 
     selector: '.bottom .socal>span:nth-child(2)' 
    }, 
    youtube: { 
     selector: '.bottom .socal>span:nth-child(3)' 
    }, 
    googleplus: { 
     selector: '.bottom .socal>span:nth-child(4)' 
    } 
    } 
}; 

そして、あなたのテストでのようにする必要があります:

ホームページオブジェクト(home.js)は、このようなことがあり

module.exports = { 
    'Social links': function(browser) { 
    const homePage = browser.page.home(); 
    var j = 0; 
    for (var i in homePage.elements) { 
     homePage 
     .navigate() 
     .waitForElementVisible(homePage.elements[i].selector, 5000, false, 
      function() { 
      browser.pause(3000); 
      }) 
     .click(homePage.elements[i].selector, function() { 
      browser 
      .pause(2000) 
      .window_handles(function(result) { 
       url = homePage.getUrl(j + 1); 
       var home = result.value[0]; 
       var handle = result.value[1]; 
       browser 
       .switchWindow(handle) 
       .verify.urlContains(url) 
       .closeWindow() 
       .switchWindow(home); 
       j += 1; 
      }); 
     }) 
    } 
    } 
}; 

PS:あなたが作成する方法を知らない場合にはページオブジェクト、http://nightwatchjs.org/guide#using-page-objectsがここにあります。
Nightwatch.js設定ファイルで

"src_folders" : ["tests"], 
    "output_folder" : "reports", 
    "custom_commands_path" : "", 
    "custom_assertions_path" : "", 
    "page_objects_path" : "./lib/pages", /* you need to add the path,e.g: './lib/pages', */ 
    "globals_path" : "", 
+0

あなたは正しいです、私は数日間これで吸い込まれました...あなたの助けをありがとう。私は疑問がある、ページオブジェクトはセレンのwebdriverで動作しないのですか?このエラーが発生しました:「セレンサーバーから新しいセッションを取得中にエラーが発生しました」 – Rita

+0

答えを編集しました。それを確認してください –

+0

ありがとうございました!ダイナミックリンク用のページオブジェクトを作成できますか?私が意味することは、クリックするリンク数とクリックするリンク数が分からないときです。それを行う方法はありますか?あなたの助けをもう一度ありがとう – Rita

関連する問題