2012-12-05 22 views
2

我是RailsSelenium的新手,但使用了其他自動化測試工具。Rails RSpec腳本無法識別元素(更新:因爲它們在iframe中)

我將Selenium 2 IDE中的腳本導出到Rails/RSpec,並且正在修改代碼以使其運行。該腳本無法找到特定的鏈接。

從工作IDE腳本中導出的原始Ruby代碼爲:

@driver.find_element(:link, "skip").click 

這失敗了,所以我試圖用XPath語句來識別元素。 (有失敗的,我通過使用XPath固定原本出口代碼等元素,所以這就是爲什麼我使用這種策略。)

我嘗試了不同的替代方案,以確定在Ruby代碼的鏈接,如:

嘗試#1:@driver.find_element(:XPath, "//*[@class='skip-link']").click

嘗試#2:@driver.find_element(:XPath, "//*[@value='skip']").click

結果在所有情況下:Unable to locate element: {"method":"link text","selector":"skip"}

HTML報每螢火蟲:每螢火蟲

<a style="float: right; margin-right: 10px; text-decoration: none;" href="/yourfuture" class="skip-link"> skip </a> 

的XPath報道:

/html/body/div[2]/div[2]/div/div/div[3]/div[4]/a 

我有超時設置爲60秒,看到的鏈接跳過幾秒鐘顯示腳本失敗過,所以我這不是一個問題。

一個可能相關的事實:當應用程序顯示所有控件的窗口時,跳過不會初始顯示。通過程序設計,應用程序等待大約5秒鐘之前。

我在做什麼錯?提前致謝。

回答

0

事實證明,沒有看到的鏈接是在一個iFrame中。 iFrame的屬性改變所以很難用一個靜態的屬性來識別它,所以我剛插入下面的代碼行剛行的webdriver不能「看到」之前:

@driver.switch_to.frame(0) 

我可以有也如果有可靠的方法來識別iframe,則使用@driver.switch_to.frame("iframe-identifier-per-swtich")

是的,你可能知道,但也許這會幫助另一個新手避免同樣的問題。