2012-02-08 6 views
4

私のプロジェクトでは、selenium2 + python + amazon ec2(Ubuntu 11.04)を使用しています。セレンヘッドレスブラウザでモーダルダイアログウィンドウを終了するには?

amazon ec2でヘッドレスの理由で、私はPyVirtualDisplayを使用しています。サーバーに表示がないためです。私は私のプロジェクトを実行していたときに

、私はそれを解決することになっているどのように例外

Traceback (most recent call last): 
    File "spyfu_ad_crawler_server.py", line 68, in <module> 
    main(i[0]) 
    File "spyfu_ad_crawler_server.py", line 34, in main 
    WebDriverWait(browser, 10).until(lambda driver : driver.find_element_by_xpath("/html/body/form/div[3]/div[3]/div/div/table/tbody/tr[3]/td/tab le/tbody/tr[2]/td/table/tbody")) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/support/wait.py", line 49, in until 
     value = method(self._driver) 
    File "spyfu_ad_crawler_server.py", line 34, in <lambda> 
     WebDriverWait(browser, 10).until(lambda driver : driver.find_element_by_xpath("/html/body/form/div[3]/div[3]/div/div/table/tbody/tr[3]/td/table/tbody/tr[2]/td/table/tbody")) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 210, in find_element_by_xpath 
     return self.find_element(by=By.XPATH, value=xpath) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 645, in find_element 
     {'using': by, 'value': value})['value'] 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 153, in execute 
     self.error_handler.check_response(response) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 147, in check_response 
     raise exception_class(message, screen, stacktrace) 
     WebDriverException: Message: u'Modal dialog present' 


Traceback (most recent call last): 
    File "spyfu_ad_crawler_server.py", line 75, in <module> 
     browser.get(base_url) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 165, in get 
     self.execute(Command.GET, {'url': url}) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 153, in execute 
     self.error_handler.check_response(response) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 147, in check_response 
     raise exception_class(message, screen, stacktrace) 
    selenium.common.exceptions.WebDriverException: Message: u'Modal dialog present' 

取得していますか?

どのようにセレンのようなダイアログボックスをPythonで処理するのですか?

+0

私は似たようなエラーに遭っています。しかし、私の場合は、テスト以外の目的でセレンを使用しているので、はるかに致命的です。あなたがそれを解決した場合は、解決策を共有してください。私はその間にそれを調べ、何か解決策が見つかるかどうかを知らせます –

+0

@anujsingh確かな仲間。 – Nava

+0

私も同じエラーが発生しています!誰かが解決策を見つけたら、私たちと共有してください! –

答えて

2

)(前とdriver.getをやった後、次のコードを実行してください:

driver.execute_script('window.onbeforeunload = function() {}') 

それが動作するはずです。私はチェックしていないが、Firefoxのウェブサイトはこのイベントの詳細を持っているはずです。

基本的に、モーダルダイアログボックスを表示するWebページのハンドラをリセットしています。だからあなたはそれが表示されて表示されません。このアプローチは私の問題をかなり解決しました。

+0

@anujsinghこれを試してフィードバックを更新してください。 – Nava

+0

@ThanasisPetsasあなたもバディです – Nava

+0

@サルバナ、私はanujsinghからanupam sainiに私の表示名を変更しました:)私はすでにこれを自分のコードベースでテストしています。何か問題がある場合は、私に知らせてください。 –

関連する問題