2010-10-05 17 views
1

我正在嘗試在Watir中爲我們的Web應用程序設置一些UI測試。點擊事件傳播時遇到問題。我們使用EXTJS製作製表符,這些製表符在生成的html中是跨度的。如何在Watir中鏈接元素時使點擊事件生效?

如果我選擇這樣的跨度它的工作原理:

span1 = @browswer.span(:text=>"Tab Name") 
span1.click 

麻煩的是,當我有相同名稱的子選項卡,並希望能夠區分它們。我發現明確選擇子標籤的唯一方法是首先選擇子標籤所在的列表,然後從中選擇子標籤。

ul = @browser.ul(:class=>/tab-strip-bottom/) 
span2 = ul.span(:text=>"Tab Name") 
span2.click 

span2.click似乎沒有做任何事情。 span1和span2之間唯一不同(我可以看到)是容器屬性。 span1。@ container = @browser,span2。@ container = ul。

我試着設置上跨度2的容器

span2.instance_variable_set("@container", @browser) 

但後來我拉閘點擊錯了標籤上的反正。對此有何想法? 謝謝!

+0

向我們展示HTML。 – 2010-10-06 10:38:35

+0

    \t <跨度類= 「X-製表帶文本 」>位置
    \t 地址
2010-10-07 13:44:22

+0

該ID不是靜態的。 – 2010-10-07 13:47:04

回答

0

我終於解決了我用xpath所遇到的問題。

tab = @browser.element_by_xpath(".//*[contains(@class,'x-tab-strip-top')]//*/em/span/span[. =\"#{value}\"]") 
tab.click 

這是不理想的,因爲xpath代碼是非常醜陋的。如果可以通過使用watir的「糖果」選擇器來選擇元素,那麼可維護性會更好。

+0

xpath解決方案不像我原先想象的那樣醜陋。我可以使用與Watir方法允許的相同方式將相對xpaths連接在一起。因此,我可以有一個返回的XPath來所需要的標籤欄的方法,另一個找到相對於標籤條上的標籤中的XPath),另一個找到一個菜單項(相對於選項卡)。將它們一起拍下來,我得到了一個絕對的xpath,指向有問題的元素。可能需要 – 2010-10-18 13:38:42

+0

有時候這種事情,但你的情況,我認爲你可以使用的Watir,因爲它的設計使用。 embedded_tab = @ browser.span(:文本=> 「選項卡名稱」)。跨距(:文本=> 「選項卡名稱」) 爲您提供了嵌入式標籤。或者更好: parent_tab = @ browser.div(:id,'somethingUnique')。span(:text =>「Tab Name」) child_tab = parent_tab.span(:text =>「Tab Name」) 總會給父(非嵌入式)選項卡(更換點真格)和相對於孩子標籤。 這消除了需要調試3個功能和解密XPath來找出你的代碼做什麼。 – JEH 2010-10-25 15:10:54

0

您可以指定在有多個匹配對象時使用的索引。這對你有用嗎?

@browser.span(:text=>"Tab Name", :index => 2).click 

的指數值是相對於您正在搜索的容器,當搜索對象看到使用的所有可能性的表:HTML Elements Supported By Watir

0

我們有一個網頁菜單,多層次,聽起來像你有什麼。進入下一個選擇(直接對角線)時,鼠標將從菜單的第二層下降,第二層菜單層將關閉。那是你在說什麼?我們通過觸發javascript來解決它,因爲菜單項稱爲javascript(Zeljko的解決方案)。我們只需要注意菜單項的ID。不確定這是否比xpath解決方案更醜或更漂亮。我說「我們」,因爲我需要幫助。

相關問題