2014-02-06 47 views
0

使用量角器我想從我的Angular JS應用程序中提取一些特定的數據。 我想提取的數據嵌入在這個div內的ID爲「jobHolder」的外部div中我有幾個嵌入式div,每個都有一個id「job_i」。其中i從1到n ...Angular JS量角器提取數據

下面是HTML:

<div class="thumbJobs" id="jobHolder" style= 
"height: 275px; overflow: hidden;" tabindex="5052"> 
    <div class="job ng-scope" id="job_1"> 
     <div class="viewerEye" id="job_1_viewerEye"></div> 
     <div class="jobBigPicto transition_2_opa" id="job_1_jobBigPicto"> 
      <div class="jobsSmallPictos transition_2_opa" id= 
      "job_1_jobsSmallPictos"> 
       <div class="jobDown transition_2_opa" id="job_1_jobDown"> 
        <div class="jobTitle ng-binding"> 
         TSK(Z87700J)(000)(Z87700JU00)(000) 
        </div> 
        <div class="jobText ng-binding"></div> 
       </div> 
       <div class="jobHoverInfo" id="job_1_jobHoverInfo"></div> 
       <div class="job ng-scope" id="job_2"> 
        <div class="job ng-scope" id="job_3"> 
         <div class="job ng-scope" id="job_4"> 
          <div class="job ng-scope" id="job_5"> 
           <div class="job ng-scope" id="job_6"> 
            <div class="job ng-scope" id="job_7"> 
            </div> 
           </div> 
          </div> 
         </div> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

我想提取是JOBTITLE在每個立式珠磨機DIV。我曾嘗試使用中繼器,但我無法提取所有數據,因此我正在嘗試使用Id。

我想提取所有的數據嵌入在具有id = job_i的div中,我從1到最後一個具有相同ID的DIV的最後一個索引?

我已經使用此代碼來提取數據,但代碼只顯示前6個元素。 它可能是一個同步超時問題?

for (var i=1; i<20;i++) 
    { 
    var result = ptor.findElement(by.xpath('html/body/div[2]/div[1]/section[5]/div[4]/div['+i+']/div[4]/div[1]')); 

    result.getText().then(function(text) 
    { 
     console.log(text); 
    }); 

這裏是控制檯輸出它顯示只有6元,而該網頁顯示的是20個元素:

TSK(Z87700J)(000)(Z87700JU00)(000) 
TSK(AGD170JFZZ)(000) 
TSK(ZA1112O)(000)(ZA1111OU00)(000) 
TSK(ZA1100O)(000)(ZA1100OU00)(000) 
TSK(ZA1111O)(000)(ZA1111OU00)(000) 
WAR27_STEP16 A TASK FOR CHAR FR 
AN TASK WITH SPACE 
WAR81_STEP_NETWORK_SESSION_MU 
TSK(TTS758J)(000)(TTS758JN00)(000) 
. 

Finished in 10.851 seconds 
1 test, 0 assertions, 0 failures 
+0

你知道內部div可能有多大,即n的值嗎? – Anand

+0

是的,它總是20. – Ziwdigforbugs

+0

你可以不使用for循環,然後遞歸地直到底部獲取所有數據? – Anand

回答

0

你可能會打,因爲默認情況下的時序問題的所有findElement請求在異步自然和回報的諾言。你可能會更好編寫代碼如下:

 for (var i=1; i<20;i++) 
     { 
    ptor.findElement(by.xpath('html/body/div[2]/div[1]/section[5]/div[4]/div['+i+']/div[4]/div[1]')) 
     .then(function(result){ 
      result.getText().then(function(text) 
      { 
       console.log(text); 
      }); 
     }); 

這應該包裹findElement請求中的每一個,這樣的承諾解決後,他們各自得到妥善處理。

你可能會看到的另一件事是使用findElements取回數組,然後迭代並轉儲到控制檯。

希望這會有所幫助。

+0

這段代碼也只顯示了6個第一項,實際上我試圖用xpath顯示第7,8個項目,但它也沒有做任何工作,量角器也不能看到/發現thoses元素,即使它們很好顯示在非常奇怪的屏幕上! – Ziwdigforbugs