1

Chrome拡張機能があり、Seleniumでテストしたいと思います。この拡張機能はiframeタグをページに配置します。Selenium:Chrome拡張機能のNoSuchFrameException

私は正常に次のコマンドを実行して、iframeタグを取得することができます:私は「NoSuchFrameException」エラーを取得し、フレームへの切り替えしようとすると、しかし

top_frame = driver.find_element(By.XPATH, value='//iframe[@class="top-frame"]') 

を。

driver.switch_to.frame(top_frame) 

次の行は、フレームのクラス名を正しく

print(top_frame.get_attribute('class')) 

エラーログを出力します

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

フレームが初期化されていない可能性があります。ブラウザがフレーム自体をブロックしている可能性がありますか? –

+0

しかし、私はフレームを得ることができます。私は、フレームの初期化は問題ではないと思います。 –

+0

あなたは現在、上記のフレーム以外のフレームにいますか? – Kapil

答えて

0

を、この男を試してみてください、ほとんどの場合、 gはswitch_to_frame()呼び出しを中断します。そのため、私はFirefoxを使い始めました。今はすべてがスムーズです。

0

、Chromeの最新版では

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