2017-08-08 1 views
-1

Ich versuche, einen Rahmen unter Verwendung Selenium in Python auszuwählen. Die Webseite enthält eine Anzahl von Frames, die unter einem Frameset-Element verschachtelt sind. Ich habe versucht, einen Rahmen mit dem Namen "fraMenu" Auswahl mit:Kann Frame nicht finden, der in Selenium Python existiert

driver.switch_to.frame (driver.find_element_by_name ("fraMenu"))

aber ich bin die NoSuchElementException mit der Fehlermeldung bekommen: Meldung : Kann Element suchen: [name="fraMenu"]

Der vollständige Code unten:

driver = webdriver.Firefox() 

    driver.implicitly_wait(10) 
    driver.maximize_window()   

    driver.get("someurl") 

    # switch back to default frame 
    driver.switch_to.default_content() 

    # switch to frame with name fraMenu 
    driver.switch_to.frame(driver.find_element_by_name("fraMenu")) 
+0

Hat der Rahmen eine ID? Ich bin ziemlich sicher, dass Sie den Rahmen nach ID – Mangohero1

+0

suchen können Mögliches Duplikat von [Auswahl eines Iframe mit Python Selen] (https://stackoverflow.com/questions/7534622/selecting-an-iframe-using-python-selenium) – JeffC

+0

Kannst du den relevanten HTML oder die URL bitte teilen? – DebanjanB

Antwort

0

Haben Sie versucht, einige Zeit zu warten, bevor Sie versuchen, es zu finden? Vielleicht hatte der Rahmen keine Zeit zum Laden. Ich würde vorschlagen, Sie beginnen mit time.sleep(4) und wenn es funktioniert, dann versuchen Sie zu warten, bis der Rahmen mit einer erwarteten Bedingung geladen wird.

1

Sie können tatsächlich ein iFrame mit den folgenden Methoden wählen: -

  • Rahmen (Index)
  • Rahmen (Name des Rahmen [oder] Id des Rahmens)
  • Rahmen (WebElement frameElement)
  • defaultContent()

So können Sie schalten die jede oben genannten Informationen über den Rahmen, indem. Ja müssen Sie jedes Mal wechseln nach Aktion erfordern

Beispiel: -

driver.SwitchTo().Frame("top"); 

.... Führen Sie Ihre Aktion auf dem Rahmen

driver.SwitchTo().defaultContent(); 

driver.SwitchTo().Frame("navigation"); 

.... Führen Sie Ihre Aktion auf dem Rahmen

driver.SwitchTo().defaultContent(); 

....

Nun müssen Sie die Hierarchie Ihres verschachtelten Frames finden und alle nacheinander wechseln.

Verwenden Sie chrome dev tools und wählen Sie das Element, das Sie die Hierarchie sehen können .. nur von Eltern zu Kind wechseln, bis Ihr Element nicht erreichen. führen Sie Ihre Betrieb und wechseln

Beispiel auf Standard: -

enter image description here

Hoffe, es wird Ihnen helfen :)

Verwandte Themen