2017-05-27 13 views
0

パスワードを入力して動作しているかどうかを確認しています。 enter image description hereSeleniumでのポップアップウィンドウの処理

間違ったパスワードを入力すると、サイトの再読み込みとポップアップが表示されます。 enter image description here

どのようにポップアップを処理しますか?たとえば、ポップアップで要素を自動的にクリックするにはどうすればよいですか?

マイコード:

from selenium.webdriver.support import expected_conditions as EC 
    while (2>1): 
       Sam = browser.find_element_by_css_selector("input[id=1]") 
       Sam.send_keys(i) 
       login = browser.find_element_by_css_selector("input[id=2]") 
       login.click() 
       if EC.alert_is_present: 
        browser.switch_to.alert.accept() 
       else: 
        print i 
        break; 

私はこのエラーを取得しています:

Traceback (most recent call last): 
    File "<pyshell#58>", line 1, in <module> 
    sexy() 
    File "<pyshell#57>", line 3, in sexy 
    browser.get('http://eps.gpeonline.co.in/') 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 264, in get 
    self.execute(Command.GET, {'url': url}) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in execute 
    self.error_handler.check_response(response) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response 
    raise exception_class(message, screen, stacktrace) 
WebDriverException: Message: Failed to decode response from marionette 
+0

エラーはアラート処理とは関係がないようです。あなたのスクリプトは 'browser.get( 'http://eps.gpeonline.co.in/')' – Andersson

+0

@Anderssonを実行できませんでしたが、もし 'if'と' else'を削除して手動で 'ok'スクリプトがうまくいけば –

+0

試してみてください。 – PRABA

答えて

1

あなたは間違ってEC.alert_is_presentを使用する:あなたのif条件は常にEC.alert_is_presentとしてTrueを返しますちょうどクラスです。代わりにif/elsetry/exceptブロックの下に使用してみてください:

from selenium.common.exceptions import TimeoutException 
from selenium.webdriver.support.ui import WebDriverWait as wait 

try: 
    wait(browser, 1).until(EC.alert_is_present()).accept() 
except TimeoutException: 
    print i 
    break 

これは、あなたはそれが存在するか、印刷i場合に警告受け入れて、それが1秒間に表示されていなかった場合は、ループを切断できるようにする必要があります(あなたが変更することができますタイムアウト値)

関連する問題