2017-01-24 10 views
1

Python3-Seleniumを使用してウェブサイトにアクセスしたいと思います。しかし、私の目標のウェブサイトにアクセスするには、私は認証ページに合格しなければなりません。Python3 Seleniumポップアップダイアログでユーザ名とパスワードを入力

たとえば、アクセスしたいURLターゲットウェブサイトはhttps://target_website.comです。認証ページのURLはここhttps://example.example.com/ab/cd/ef

であるのに対し、ページのサンプルです:

enter image description here

あなたは上の図から見ることができるように、私がしなければならない:

  1. フィルユーザー名
  2. パスワードの入力
  3. ログインをクリックしてください。

次のコードを試してみましたが、うまくいきませんでした。

browser = webdriver.Chrome('path_to_exe') 
wait = WebDriverWait(browser, 600) 

browser.get('https://target_website.com') 
wait.until(EC.alert_is_present()) 
browser.get('https://<username>:<password>@example.example.com/ab/cd/ef') 

次のコードを試しても、動作しませんでした。

browser = webdriver.Chrome('path_to_exe') 
wait = WebDriverWait(browser, 600) 

browser.get('https://target_website.com') 
wait.until(EC.alert_is_present()) 
browser.get('https://<username>:<password>@example.example.com') 

最後に、次のコードを試しましたが、もう一度動作しませんでした。

browser = webdriver.Chrome('path_to_exe') 
wait = WebDriverWait(browser, 600) 

browser.get('https://target_website.com') 
wait.until(EC.alert_is_present()) 
alert = browser.switch_to_alert() 
alert.authenticate('<username>', '<password>') 
alert.accept() 

答えて

1

は、次を使用してみてください:このアプローチはFirefoxにあなたの提案のための唯一の

+0

おかげで動作することを

from selenium.webdriver.common.keys import Keys browser = webdriver.Firefox('path_to_exe') wait = WebDriverWait(browser, 10) browser.get('https://target_website.com') alert = wait.until(EC.alert_is_present()) alert.send_keys('username' + Keys.TAB + 'password') alert.accept() 

注意!残念ながら、私はFirefoxを持っていません。不思議なことに、IEを使用している場合、認証ページをスキップすることがあります。しかし、私のコードはIE11では動作しません。次のエラーメッセージが表示され続けました: 'NoSuchWindowException:メッセージ:閉じたウィンドウで要素を見つけることができません。 ' – arnold

+0

Firefoxを使って試しました。この部分 'alert.send_keys( 'username')'は働いていました。この部分は 'alert.send_keys(Keys.TAB)'になりました。しかし、この部分 'alert.send_keys( 'password')'は動作しませんでした。 'alert.send_keys(Keys.TAB)'の後、カーソルはパスワードフィールドに移動しましたが、 'alert.send_keys( 'password')'を実行すると、パスワードはusernameフィールドに書き込まれました。したがって、usernameフィールドは 'usernamepassword'で構成されています。どのようにこれに対処する考えですか?ありがとう、トン! – arnold

+0

'alert.send_keys( 'username' + Keys.TAB + 'password')'を試してください。これはうまくいくはずです。 – Andersson

関連する問題