1

je recevoir une erreur, element not found dans le navigateur Firefox GeckoDriver
Selenium - NoSuchElementException après passage d'une trame [0] à la fenêtre [1] - Erreur Firefox GeckoDriver - python

quand je passe de la fenêtre [1] cadre [0], retour à la fenêtre [1], puis cliquez sur le bouton fermer le cadre. Je veux continuer à utiliser GeckoDriver parce que j'avais des problèmes de performance avec ChromeDriver. Désolé, il s'agit d'un site interne et je ne peux pas partager le HTML.

  1. J'ai fait ce qui suit pour identifier le problème.
    • testé avec même code et fonctionne correctement dans le pilote Chrome
    • Works dans Firefox quand je passe à la fenêtre [1] cliquez sur le bouton openframe, puis cliquez sur le bouton closeframe, sans passer au cadre [0].
    • Je peux passer à la trame [0], revenir à la fenêtre [1] et faire driver.close() et il fermera la fenêtre [1].
    • Je peux lire le driver.page_source à partir de la fenêtre [1] après le retour de la trame [0] et voir que l'élément est toujours dans le page_source et n'a pas changé.
    • Je peux passer de l'image [0] à la fenêtre [0] et cliquer sur le bouton pour rouvrir la fenêtre [1] et cela fonctionne correctement. Ensuite, je peux cliquer sur les boutons d'ouverture et de fermeture du cadre.

Le problème se trouve juste sur le passage du cadre [0] Retour à la fenêtre [1], puis essayer de cliquer sur un élément dans la fenêtre [1] dans Firefox GeckoDriver.

Python: 2.7
Sélénium: 3.0.1
GeckoDriver: v0.13.0
Firefox: 51.0.1

Voici le code:

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() 

Erreur:

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

+0

Vous utilisez des index pour la commutation, êtes-vous sûr que vos index sont corrects après l'ouverture/fermeture des trames? Essayez de changer de nom de cadre et de mainWindow. – Moshisho

Répondre

0

Le code ci-dessous semblait faire l'affaire. Je ne sais toujours pas pourquoi.

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()