2012-01-19 55 views
1

我想爲Selenium編寫一個測試用例,並且在查找元素時遇到了一些問題。我相信它是因爲我的網站使用了HTML框架集。如何爲框架集中的元素找到X-Path?

如果我打開Firebug的,並試圖簡單地選擇所有鏈接:

//a 

...我沒有得到任何結果(雖然「菜單」幀包含約15+鏈接)。

如果我在菜單框單擊鼠標右鍵,選擇「僅顯示這架」,並然後螢火蟲選擇各個環節,我得到的所有15歲以上的鏈接返回

這使我相信X-Path無法遍歷特定幀內的元素。真的嗎?

當該網站顯示的所有幀,我可以選擇特定的框架:

//frame[@name='menu'] 

...但是,試圖深入到開始與x路的鏈接不起作用:

//frame[@name='menu']//a 
//frame[@name='menu']@@@//a <-- Special '@@@' syntax I read about somewhere to try. 

任何試圖用X-Paths來解決這個問題的幫助都是值得讚賞的。如果一個CSS選擇器可以工作,我也可以在那裏使用一些指針。謝謝!

JG

+1

我沒有足夠的Selenium經驗來幫助,但請記住,使用框架的HTML頁面的源只是鏈接到每個窗格中顯示的文檔,因此可能是問題的一部分。 –

回答

2

你怎麼樣第一選擇相關iframe中,然後用該框架內的XPath工作。在Ruby中

iframename = @driver.execute_script("return document.getElementById('IDName').getElementsByTagName('iframe')[0].getAttribute('Attributename')") 
@driver.switch_to.frame iframename 

# then work with the xpaths 
@driver.find_element(:xpath, "//section[@id='SomeId']/div").click 


示例代碼應該幫助,除非我的問題是錯誤的。

+1

我會給你信貸的,因爲你基本上有正確的解決方案。我必須告訴Selenium本身使用特定的「菜單」框架,然後才能訪問其中的元素。 Selenium命令是:selectFrame(xpath = // frame [@ name ='menu'])。謝謝! – tresstylez