2013-01-20 104 views
1

編輯:問題是我的硒,這不是等待頁面完全加載。語法很好。感謝大家的幫助。選擇所有<tr>標籤withing指定表

我試圖選擇位於指定類的表內的所有<tr>標記。我試圖這樣做,但這不適用於我:

"/table[contains(@class, 'tbl output')]/tbody/tr" 
"//table[@class='tbl output']/tbody/tr" 

我做錯了什麼?

表我在尋找通過:

<table class="tbl output" cellspacing="0"> 
<colgroup></colgroup> 
<tfoot></tfoot> 
<tbody> 
    <tr class="strong"></tr><tr></tr><tr></tr><tr></tr><tr class="strong"></tr><tr></tr><tr></tr><tr></tr><tr></tr> 
</tbody> 
</table> 

我與硒這樣做:var rows = drv.FindElements(By.XPath("//table[@class='tbl output']/tbody/tr"));

而且哦,行只包含一個位置,我不知道這是因爲視覺是什麼工作室崩潰時,我試圖把一個斷點,並檢查它。 : -/

+1

第二表達似乎好。文件是什麼樣的? – toniedzwiedz

+0

@Tom:更新了我的問題。 – ojek

+1

我的所有工具都會爲您的XPath表達式返回9個'tr'標籤,因此它必須是Selenium特有的。您使用API​​的方式。 – toniedzwiedz

回答

1

我試過如下:

let $doc := <table class="tbl output" cellspacing="0"> 
<colgroup></colgroup> 
<tfoot></tfoot> 
<tbody> 
    <tr class="strong"></tr><tr></tr><tr></tr><tr></tr><tr class="strong"></tr><tr></tr><tr></tr><tr></tr><tr></tr> 
</tbody> 
</table> 

return $doc[@class='tbl output']//tr 

所以,我認爲你應該使用:

.[@class='tbl output']//tr 

或者你必須定義圍着桌子標籤的文檔元素。我假設上面的代碼是你的整個文檔。至少在這種嵌入式的方式。因此,表標籤被視爲文檔。

+2

感謝您的幫助,反正我的語法也不錯。問題在於我使用硒,而不是等待頁面完全加載。 – ojek

+0

好的,但是如果文檔看起來像上面發佈的代碼 // table [class ...]將不起作用。看到我上面的解釋。但在這種情況下,您的整個文檔(您正在查詢的)看起來不同。無論如何,謝謝你的提示! – sisu

相關問題