我有以下的HTML中,我試圖找到所有內只div.container-fluid.container-results >div >ul >li
的svg
元素,我不想裏面div.container-fluid.container-results >div >ul >div.result-controls
的SVG元素對於給定row_number
參數,此處ROW_NUMBER代表div[contains(@class,'invoice-result-row')][contains(@id,#{row_number.to_i-1})]
紅寶石硒的webdriver找到具體的SVG元素
<div class="container-fluid container-results">
<div class="invoice-result-row" id="0">
<ul>
<li class="invoice-process-status-column">
<a href="javascript:void(0)" title="Submitted">
<svg class="glyphicon-upload-green SubmittedIcon" viewBox="0 0 100 100">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#doc_upload"></use>
</svg>
</a>
</li>
<li class="invoice-process-status-column">
<a href="javascript:void(0)" title="Sent">
<svg class="glyphicon-upload-green SentIcon" viewBox="0 0 100 100">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#doc_upload"></use>
</svg>
</a>
</li>
<li class="invoice-process-status-column">
<a href="javascript:void(0)" title="Pending">
<svg class="glyphicon-upload-green PendingIcon" viewBox="0 0 100 100">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#doc_upload"></use>
</svg>
</a>
</li>
<li class="invoice-file-label-column"><span>validated.txt</span></li>
<li class="invoice-client-company-column"><span>QA-CP-PP-TRUNK</span></li>
<li class="invoice-reference-column"><span>T12345638800</span></li>
</ul>
</div>
<div class="invoice-result-row" id="1">
<ul>
<li class="invoice-process-status-column">
<a href="javascript:void(0)" title="Processing">
<svg class="glyphicon-spin ProcessingIcon" viewBox="0 0 100 100">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#refresh"></use>
</svg>
</a>
</li>
<li class="invoice-process-status-column">
<a href="javascript:void(0)" title="Delivered">
<svg class="glyphicon-upload-green DeliveredIcon" viewBox="0 0 100 100">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#doc_upload"></use>
</svg>
</a>
</li>
<li class="invoice-file-label-column"><span>Pending.txt</span></li>
<li class="invoice-client-company-column"></li>
<li class="invoice-reference-column"></li>
<div class="result-controls">
<li class="invoice-delete-column"></li>
</div>
</ul>
</div>
<div class="invoice-result-row" id="2">
<ul>
<li class="invoice-process-status-column">
<a href="javascript:void(0)" title="Submitted">
<svg class="glyphicon-upload-green SubmittedIcon" viewBox="0 0 100 100">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#doc_upload"></use>
</svg>
</a>
</li>
<li class="invoice-file-label-column"><span>validated - Copy.txt</span></li>
<li class="invoice-client-company-column"><span>QA-CP-PP-TRUNK</span></li>
<li class="invoice-reference-column"><span>T12345638799</span></li>
<div class="result-controls">
<div class="attachment">
<li class="invoice-add-attachment-button-column"><a><button>ADD ATTACHMENTS</button></a></li>
<input type="file" multiple="" style="display: none;">
</div>
<li class="invoice-sign-button-column"><a href="javascript:void(0)"><button>SIGN</button></a></li>
<li class="invoice-draft-button-column"><a><button>DRAFT</button></a></li>
<li class="invoice-delete-column">
<a href="javascript:void(0)" title="Delete">
<svg class="glyphicon-trash deleteIcon" viewBox="0 0 100 100">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#trash"></use>
</svg>
</a>
</li>
</div>
</ul>
</div>
</div>
我試圖在Ruby中使用Selenium wendriver做到這一點,但它的no such element: Unable to locate element: {"method":"tag name","selector":"svg"}
在li
元素上,它沒有svg
元素。
rows = driver.find_elements(:css => "div.container-fluid.container-results >div >ul")
rows[row_number.to_i-1].find_elements(:xpath => "./li").each do |it|
if !it.find_element(:tag_name, "svg").nil?
iconClass = it.find_element(:tag_name, "svg").attribute('class')
puts "icon #{iconClass}"
end
end
我剛開Ruby編程開始與硒,能有人幫我解決這個問題?
你可以嘗試使用xpath作爲'SubmittedIcon'作爲'// svg [@ class ='glyphicon-upload-green submittedIcon']' –
'div.container-fluid.container-results> div> ul> li>一個> svg'這將帶你到SVG,但它不會是唯一的 –
@KishanPatel我不希望它硬編碼,它必須足夠通用,以便我的硒腳本可以在不同的頁面上運行..我也試過'div.container-fluid.container-results> div> ul> li> a> svg'但我無法消除其他不需要的'svg'元素 – RanPaul