2017-02-03 83 views
1

我在火狐GeckoDriver瀏覽器
硒的Python

當我從窗口切換接收到錯誤,element not found [1]至框架[0],回到窗口[1],然後單擊關閉框架按鈕。

我想繼續使用GeckoDriver,因爲我遇到了性能問題ChromeDriver。對不起,這是一個內部網站,我不能分享HTML

  1. 我已經做了以下指出的問題。
    • 測試用完全相同的代碼和在鉻驅動
    • 在Firefox當我切換到窗口[1]單擊​​按鈕,然後單擊closeframe按鈕,而無需切換到[0]幀正常工作。
    • 我可以切換到幀[0],切換回窗口[1]並執行driver.close(),它將關閉窗口[1]。
    • 我可以從窗口[1]中讀取driver.page_source,從幀[0]切換回來,看到元素仍然在page_source中,並且沒有改變。
    • 我可以從幀[0]切換回窗口[0],然後點擊按鈕重新打開窗口[1],並且工作正常。然後,我可以點擊打開和關閉框架按鈕。

所以問題只是駐留在從幀交換[0]回窗口[1],然後試圖點擊窗口[1]在Firefox GeckoDriver的元件。

的Python:2.7
硒:3.0.1
GeckoDriver:v0.13.0
火狐:51.0.1

下面是代碼:

firefox_capabilities = DesiredCapabilities.FIREFOX 
firefox_capabilities['marionette'] = True 
driver = webdriver.Firefox(capabilities=firefox_capabilities) 
driver.get('www.internalwebsite.com') 
driver.find_element_by_id('opensnewwindow').click() 
driver.switch_to_window(driver.window_handles[1]) 
driver.find_element_by_id('opennewframe').click() 
driver.switch_to_frame(0) 
//read contents 
driver.switch_to_window(driver.window_handles[1]) 
driver.find_element_by_id('closeframe').click() 

錯誤:

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="closeframe"]

+0

您正在使用索引進行切換,打開/關閉幀後確定索引是否正確?嘗試通過幀名稱和mainWindow進行切換。 – Moshisho

回答

0

下面的代碼似乎有伎倆。仍然不確定爲什麼。

driver.switch_to.default_content() 

firefox_capabilities = DesiredCapabilities.FIREFOX 
firefox_capabilities['marionette'] = True 
driver = webdriver.Firefox(capabilities=firefox_capabilities) 
driver.get('www.internalwebsite.com') 
driver.find_element_by_id('opensnewwindow').click() 
driver.switch_to_window(driver.window_handles[1]) 
driver.find_element_by_id('opennewframe').click() 
driver.switch_to_frame(0) 
//read contents 
driver.switch_to.default_content() 
driver.switch_to_window(driver.window_handles[1]) 
driver.find_element_by_id('closeframe').click()