webentwicklung-frage-antwort-db.com.de

Selen und iframe in HTML

Send_key () kann nicht für einen iframe verwendet werden. Wie wähle ich dieses iframe aus und welches Element sollte für send_key () verwendet werden?

page image

und iframe html code

<iframe class="textarea" src="/framework/html/blank.html" style="width: 99%; border-width: 1px; height: 332px;">
#document
<html webdriver="true">
<head>
</head>
<body> … </body>
</html>
</iframe>

Wie sende ich den Wert zur Beschreibung?

Eine weitere Sache, die ich wissen möchte, dass dieser Code des Frames nicht kommt, wenn ich im Browser die Option "Quelltext anzeigen" auswähle?

21
RATHI

driver.switch_to.frame(driver.find_element_by_tag_name("iframe")) unter der Annahme, dass der Treiber eine fehlerfreie Instanz von Webdriver ist. Um mit dem Standardinhalt fortzufahren, driver.switch_to.default_content()

EDIT: Wenn Sie zum gewünschten Frame gewechselt sind, suchen Sie Ihr Webelement wie immer. Ich denke (aber nicht sicher), in deinem Fall wird dies ein HTML/Body sein, also

el = driver.find_element_by_xpath('html/body')

sollte gut sein. Und führen Sie durch

el.send_keys('keys_to_send')

EDIT2: Vor dem Senden von Schlüsseln müssen Sie sich möglicherweise auf das Element konzentrieren (Klicken sollte das Ding tun, ein untergeordnetes Element sollte erscheinen). Oder Sie können den gewünschten Text einfach über JS platzieren.

driver.execute_script('document.body.innerHTML = "%s"' % text_var)

49
Furious Duck

Um mit iframes auf einer Webseite umzugehen, müssen Sie zuerst zu den auf der Seite vorhandenen iframes wechseln, indem Sie folgenden Befehl verwenden: Driver.switch_to.frame (frame_id)

Dieses Tutorial enthält ein funktionierendes Beispiel für die Verwendung von Umgang mit iframe mit Selenium mit Python , wodurch Sie dieses Problem durcharbeiten können.

1
Furqan Ud Din

Die akzeptierte Antwort funktioniert sehr gut für die gegebene Frage. Ich habe jedoch zwei Gründe, eine weitere Antwort hinzuzufügen, und ich hoffe, dass diese Antwort jemandem helfen kann, der diese Frage mit unterschiedlichen Fragen beantwortet.

Grund 1:

Die akzeptierte Antwort hat eine Möglichkeit, mit iframes innerhalb einer Webseite umzugehen. Es gibt jedoch verschiedene Möglichkeiten, mit Iframes umzugehen.

  • Indem Sie die Indexposition des Rahmens verwenden
  • Mit dem Namen des Rahmens
  • Mit der ID des Frames

Grund 2:

Es verwendet die Anweisung driver.find_element_by_tag_name ("iframe"), um ein iframe-Element zu finden, das möglicherweise nicht funktioniert, oder das erwartete iframe-Webelement zurückzugeben, wenn sich auf derselben Seite mehrere iframe-Elemente befinden.

Es gibt viele Artikel, die den Umgang mit Iframes detailliert erklären.

  1. http://allselenium.info/handling-iframes-using-Selenium-webdriver/
1
Arun211