Ich habe eine Chrome-Erweiterung und möchte sie mit Selenium testen. Die Erweiterung platziert ein iframe-Tag auf Seiten.Selen: NoSuchFrameException für Chrome-Erweiterung
Ich kann erfolgreich das iframe-Tag erhalten, indem Sie den folgenden Befehl ausführen:
top_frame = driver.find_element(By.XPATH, value='//iframe[@class="top-frame"]')
Allerdings, wenn ich mit dem Rahmen versuchen Schalt I 'NoSuchFrameException' Fehler.
driver.switch_to.frame(top_frame)
Die folgende Zeile gibt den Klassennamen des Rahmens korrekt
print(top_frame.get_attribute('class'))
Fehlerprotokoll:
Testing http://www.google.com
Traceback (most recent call last):
File "test/run_tests.py", line 200, in <module>
main()
File "test/run_tests.py", line 197, in main
run_tests(args.plugin, args.out, args.url)
File "test/run_tests.py", line 167, in run_tests
button = check_button(driver, url)
File "test/run_tests.py", line 84, in check_button
driver.switch_to.frame(top_frame)
File "/home/burak/.virtualenv/extension/lib/python3.5/site-packages/selenium/webdriver/remote/switch_to.py", line 87, in frame
self._driver.execute(Command.SWITCH_TO_FRAME, {'id': frame_reference})
File "/home/burak/.virtualenv/extension/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
self.error_handler.check_response(response)
File "/home/burak/.virtualenv/extension/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchFrameException: Message: no such frame: element is not a frame
(Session info: chrome=60.0.3112.90)
(Driver info: chromedriver=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Linux 4.10.0-30-generic x86_64)
Der Rahmen wird möglicherweise nicht initialisiert. Weil der Browser den Rahmen selbst blockiert? –
Aber ich kann den Rahmen bekommen. Ich nehme an, dass die Initialisierung des Frames nicht das Problem ist. –
sind Sie derzeit auf einem anderen Frame als genannten Frame? – Kapil