2017-05-16 10 views
1

を投げずにXPathの要素を見つけるルビーセレンウェブドライバー:私はルビーセレンウェブドライバを使用してテストしようとしていますhtmlの下に持ってはNoSuchElementException

<div class="container-fluid container-results"> 
    <div class="result-row" id="0"> 
     <ul> 
      <li class="process-status-column upload-success-icon"> 
       <svg class="glyphicon-upload-green" viewBox="0 0 100 100"> 
        <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#doc_upload"></use> 
       </svg> 
      </li> 
      <li class="file-label-column"><span>validated.txt</span></li> 
      <li class="client-company-column"><span>test-client</span></li> 
      <li class="reference-column"><span>Ref001</span></li> 
     </ul> 
    </div> 
    <div class="result-row" id="1"> 
     <ul> 
      <li class="process-status-column upload-error-icon"> 
       <svg class="glyphicon-exclamation" viewBox="0 0 100 100"> 
        <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#exclamation"></use> 
       </svg> 
      </li> 
      <li class="file-label-column"><span>Error.txt</span> 
       <div class="attachment-row">This invoice contains an error</div> 
      </li> 
      <li class="client-company-column"><span>test-client</span></li> 
      <li class="reference-column"><span>Ref002</span></li>    
     </ul> 
    </div> 
    <div class="result-row" id="2"> 
     <ul> 
      <li class="process-status-column upload-pending-icon"> 
       <svg class="glyphicon-spin" viewBox="0 0 100 100"> 
        <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#refresh"></use> 
       </svg> 
      </li> 
      <li class="file-label-column"><span>Pending.txt</span></li> 
      <li class="client-company-column"></li> 
      <li class="reference-column"></li>    
     </ul> 
    </div> 
</div> 

私が一致する、ul要素selectedLineとして変数を見つけようとしています私は、パラメータ値unique_field_valueしかし、私としてvalidated.txtを渡した場合、入力パラメータごととしてspan値はunique_field_valueコードの上

selectedLine = nil 
rows = driver.find_elements(:css => "div.container-fluid.container-results >div.result-row >ul") 
rows.each do |row| 
    element = row.find_element(:xpath => "./li/span[contains(., '#{unique_field_value.to_s.strip}')]") 
    if(!element.nil?) 
    selectedLine = row 
    end 
end 

が正常に動作しますF私はError.txtまたはPending.txt午前getttig例外の下を通る

no such element: Unable to locate element: {"method":"xpath","selector":"./li/span[contains(., 'Error.txt')]"} (org.openqa.selenium.NoSuchElementException) 

私は繰り返しを続けますか私のコードは、rowsの最初の反復でunique_field_valueパラメータを照合し、それがものを見つけるdoesntの場合は例外をthrowning span要素を検索しようとしていますNoSuchElementException例外をスローせずrowsのすべての要素の上に

+0

以下で作業 '要素が= row.find_elementかどうかを確認でした(:のxpath => '// * [テキスト()= "#{unique_field_value.to_s.strip}"]')'一部と一致しました素子? –

+0

Rubyでは、文法上、変数やメソッドにcamelCaseを使用していません。 ItIsAReadabilityThingなので、 'selectedLine'は' selected_line'です。 –

答えて

0

は試してみてください。

rows.each do |row| 
    element = row.find_element(:xpath => "./li/span[contains(., '#{unique_field_value.to_s.strip.downcase}')]") 
    if(!element.nil?) 
    selectedLine = row 
end 
0

はそれを得ましたコード

rows.each do |row| 
    elements = row.find_elements(:xpath => "./li/span[contains(., '#{unique_field_value.to_s.strip}')]") 
    if (elements.length > 0) 
     selectedLine = row 
    end 
    end 
関連する問題