2016-05-18 12 views
0

Ich habe diesen Code und läuft in Ordnung, aber ich möchte es in einer Schleife laufen, so dass es zählen wird, wie viele Elemente es in class="socal" hat und dann jeden Link testen.Einen Test erstellen, der in einer Schleife läuft

module.exports = { 
    'Unitel Fitness - click' : function (browser) { 
    browser 
     .url('http://m.unitel.ao/fit/') 
     .execute('scrollIntoView(alignToBottom)') 
     .waitForElementVisible('.socal>span:nth-child(1) a', 6000) 

     .moveToElement('.socal>span:nth-child(1) a', 3, 3) 
     .pause(6000) 
     .click(".socal>span:nth-child(1) a") 
     .pause(6000) 
     .keys(['\uE006']) 

     .window_handles(function (result) { 
      var handle = result.value[1]; 
      browser.switchWindow(handle); 
      browser.pause(1000); 
      //browser.assert.urlContains('facebook'); 
      browser.closeWindow(); 
     }) 
     .end(); 
    } 
}; 

Ich aktualisierte den Code für diese aber immer noch nicht genau das, was ich will. Das Ergebnis ist das Folgende: (Ich versuchte schon mehr Zeit geben)

Anzahl der Links: 4 i val vor ausführen: 1 i val vor ausführen: 2 i val vor ausführen: 3 i val vor ausführen: 4? Zeitüberschreitung beim Warten auf Element < .socal> span: nth-child ("+ i +") a> ist für 8000 Millisekunden vorhanden. - „sichtbar“ erwartet, aber bekam: nicht

module.exports = { 
       'Social links' : function (browser) { 
     browser 
      .url('http://m.unitel.ao/fit/') 
      .execute(function(){ 
         return document.querySelectorAll(".socal>span").length; 
        }, 

      function(links) { 
       total_links = links.value; 

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

       for (var i = 1; i <= total_links; i++) { 
        console.log("i val before execute: " + i); 

        browser.execute('scrollIntoView(alignToBottom)'); 
        //browser.waitForElementVisible('.socal>span:nth-child("+ i +") a', 8000); 

        //call back function 
        browser.waitForElementVisible('.socal>span:nth-child("+ i +") a', 5000, function() { 

        browser.moveToElement('.socal>span:nth-child("+ i +") a', 3, 3); 
        browser.pause(8000); 
        browser.click(".socal>span:nth-child("+ i +") a"); 
        browser.pause(6000); 
        browser.keys(['\uE006']); 

        browser.window_handles(function (result) { 
         var handle = result.value[1]; 
         browser.switchWindow(handle); 
         browser.pause(8000); 
         //browser.assert.urlContains('facebook'); 
         browser.closeWindow(); 
        }) 
         }); 
       } 
      }) 

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

Was haben Sie versucht? – Aaron

+0

Hallo Aaron, ich habe versucht, eine for-Schleife, wie zum Beispiel für (var i = 0; i <= socal.length; i ++) – Rita

+1

Danke Rita. Ich weiß kein Typoskript, daher kann ich Ihre Frage nicht beantworten, aber ich kann sagen, dass dies wahrscheinlich eine Anfängerfrage ist. Daher würde ich Ihnen empfehlen, das zu bearbeiten, was Sie in Ihrer Antwort versucht haben. Andernfalls können Personen, die Ihre Frage beantworten können, dies nur widerwillig tun, wenn Sie nicht zeigen, dass Sie es versucht haben. (Die Begründung dahinter ist, dass Sie zuerst lernen sollten, die Sprache zu benutzen, und wenn Sie Antwort auf jedes kleine Problem erhalten, ohne vorher zu recherchieren, können Sie es vielleicht nie richtig lernen) – Aaron

Antwort

0

Warum Schleife, wenn Sie eine Sammlung erhalten und nutzen .length gefunden? Es ist auch leistungsfähiger.

client.getEls(classSel, function(collection) {  
      return collection.length; 
}); 
+0

Hallo QualiT, ich habe deinen Vorschlag ausprobiert, aber es sagt mir, dass "getEls keine Funktion ist" – Rita