2012-07-19 61 views
0

希望你們一切都好。這是我的第一篇文章。紅寶石鼠標不夠長,可能需要某種延遲

我想在Ruby中使用Cucumber和Selenium 2框架編寫腳本。

我想了解如何單擊基於懸停的組件上的任何給定鏈接。

塞恩斯伯裏的網站http://www.sainsburys-live-well-for-less.co.uk/就是一個很好的例子。

如果您選擇第一個鏈接,即Recipes and Insprirations,然後讓我們獲得支持,那麼您將被重定向到新頁面。

我想通過腳本來做到這一點。

當前我在顯示將鼠標光標放在食譜上時出現的重疊組件的問題&靈感按鈕。

我可以使用@ driver.mouse.move_to ele函數懸停在組件上。下一步將是查看該集合,找到該元素並單擊它,但問題是涉及的步驟太多,並且當我甚至要檢查隱藏面板中的項目數時,面板消失。

我也嘗試過使用Ruby Builder,但沒有運氣。如果有人能夠幫助我,並使用sainsbury網站作爲例子,那麼它將大有幫助。

在此先感謝。

回答

1

那麼你可以使用sleep命令,接下來是你希望硒在執行下一步之前等待的秒數。例如..:

sleep 2 

將等待2秒鐘,然後再移動到腳本的下一行。

還要檢查 this 答案點擊隱藏菜單..

好。因爲我記得你開始時的情況。你走了。我就像我說的,下載這樣做對你..

require "selenium-webdriver"   
Selenium::WebDriver::Firefox  
driver = Selenium::WebDriver.for :firefox 

driver.navigate.to('http://www.sainsburys-live-well-for-less.co.uk/') 

menu = driver.find_element(:xpath, "//div[@id='recipes-inspiration-menu']") 
submenu = driver.find_element(:xpath, "//li[@class='first first-child children']") 

driver.action.move_to(menu).click(submenu).perform 

driver.find_element(:xpath, "//a[@title='Let's Get Baking']").click 

,並安裝Firebug的它會幫助你很多..

+0

感謝您的答覆。睡眠不起作用,因爲如你所說,當睡眠結束時,睡眠進入下一行代碼。我需要一種方法讓move_to代碼行保持活動狀態,而其他代碼行則正在運行,即我需要隱藏的菜單保持可見狀態,同時我的腳本正在查找所有鏈接,然後單擊它們。我還檢查了您提供的鏈接,但沒有幫助,因爲第二次點擊鏈接對腳本而言是不可見的,直到隱藏菜單可見。 – Mohammed 2012-07-20 14:30:52

+0

問題:你如何去尋找你的網絡元素?你知道有一個非常有用的Firefox插件名爲firebug ..請檢查它! – 2012-07-20 15:19:20

+0

嘿。謝謝您的幫助。我正在使用螢火蟲。我本可以自己使用xpath,但並不是因爲網頁可能會在一天內改變,因此會打破整個腳本。我的邏輯如下:將鼠標懸停在按鈕上並查看顯示隱藏的面板。檢查隱藏項目中的所有元素並查找特定的元素。當找到特定物品時,點擊它。問題是隱藏的面板不夠長。我基本上需要找到一個解決方案來做到這一點,而不使用xpath。如果我使用xpath,那麼如果網頁更改,我的腳本將變爲redundent。 – Mohammed 2012-07-20 16:21:35