2014-07-24 118 views
0

這是我的第一篇文章,希望不要做任何錯誤。如何在一個由seleniumtest中的框架構成的頁面中找到沒有id-或class-attribute的鏈接?

那麼,我目前正在嘗試執行一些用於框架的web應用程序的硒測試。

最主要的問題是獲得它背後的邏輯如此動態,以至於沒有任何編程經驗的人可以編寫測試場景。我已經定義了一個在網站中導航的步驟,現在我需要獲取鏈接中需要單擊的鏈接,因爲該鏈接中顯示的文本只有99%的鏈接沒有ID或類或任何東西。

這些幀中有幀和幀,這些幀中有幀!幀ception。該鏈接可以在任何這些框架中。

我的想法是在所有這些幀中遞歸搜索(據我所知,selenium-webdriver只能「查看」他當前所在幀中的元素?),或者如果未找到,其他框架繼續搜索並顯示異常,或者如果在任何這些框架中找不到它們。

我有一個非常大的問題遞歸搜索。每當框架中有框架時,我再次調用方法,將當前框架作爲參數,以便webdriver可以切換回父框架,但是無論何時WebDriver應該跳回來,我都會得到一個Exception,告訴我框架無法找到。

當它看來,webdriver的只能進入幀,但不能回到那裏,除了與webDriver.switchTo()。defaultContent() -methode,這使他回絕對頂部。

有沒有辦法做到這樣的事情?我的下一個想法是創建一個數組或列表,或者存儲我的「已訪問」框架,並且我始終從頂端進入,試圖找到一個新的,未訪問的框架,但這實際上並不令人滿意。 ..

此外,硬編碼所有幀不是一個選項,因爲有幀是動態產生的,並且只有它們存在之前都不知道。

在此先感謝,我不是那麼親,仍然要學習很多,如果這是一個愚蠢的問題,我很抱歉!

+0

來定位顯示的文本中的鏈接,你可以嘗試使用此命令,[driver.find_element_by_link_text](http://selenium-python.readthedocs.org/locating-elements.html#locating-hyperlinks-通過鏈接文本)。我認爲您可以創建一個多維數組來存儲您在進行遞歸搜索幀時找到的所有幀。 – userpal

+0

歡迎來到SO。你的問題對於這個論壇太寬泛了。請仔細閱讀以下內容:https://stackoverflow.com/help/dont-ask – SiKing

+0

我不想讓我的問題違反了哪些規則?我其實只是想知道如何在父母面前跳回來,或者如果有更多經驗的人對如何解決這個問題有一個想法,這是不可能的。 –

回答

0

要切換回父框架,你可以使用:

driver.switchTo().parentFrame(); 

焦點轉到父上下文。如果當前上下文是頂級瀏覽上下文,則上下文保持不變。

相關問題