1

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) 
+0

Der Rahmen wird möglicherweise nicht initialisiert. Weil der Browser den Rahmen selbst blockiert? –

+0

Aber ich kann den Rahmen bekommen. Ich nehme an, dass die Initialisierung des Frames nicht das Problem ist. –

+0

sind Sie derzeit auf einem anderen Frame als genannten Frame? – Kapil

Antwort

0

In der neuesten Version von Chrome wahrscheinlich ist da ein bu g, die den Aufruf von switch_to_frame() unterbricht. Daher habe ich stattdessen angefangen, Firefox zu verwenden, alles ist jetzt reibungslos.

0

diesen Mann versuchen,

driver.switch_to.frame(driver.find_element(By.XPATH,value=".//iframe[@src='give your frame source name here..']"));