Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?
@KI1208

Seleniumを使ってアラートポップアップ画面に2つの文字列を入力する方法

More than 1 year has passed since last update.

問題

下のように、ウェブサイトにアクセスした際にポップアップで認証情報(ユーザ名とパスワードの2つ)を要求される。
2つ入力がある場合の対応方法がわからなかったので調べてみた。

AuthenticationRequired.jpg

結論としては、Tabを入れるという原始的な方法でクリアしました。試してませんが、3つ以上の複数でも同じやり方でできそうです。

解決策

環境

ホストマシン: Windows10
Python: 3.7
Selenium: 3.141
Driver: geckodriver_v0.23-win64.exe
Browser: Firefox 67.0b5 (32-bit)

既存の解決策調査

そもそもこの画面はSelenium的にはalertというオブジェクトのPromptというタイプになるらしい。
alertオブジェクトへの操作については、こちらが参考になりました。
ただ、2つ入力枠があるものに関するやり方がなかなか見つけられず。

Stack Overflowのこちらが全く同じことで悩んでいたが、以下のような回答をされていた。

The problem is Selenium cannot identify the authentication popups. That is a limitation of Selenium as far as I know. You can overcome the issue with using java Robot actions to fill out the username and password.

つまりSelenium単体ではできず、RPA的なことを組み合わせる必要があるらしい。
その下ではauthenticateというメソッドでできるとあったが、公式を見ても見つけられず。

You can try this:
driver.switch_to.alert.authenticate('cheese', 'secretGouda')

自分の場合

RPA組み合わせるとかつらいので、入力時にTABを入れることでクリアしました。
TABの入力については公式で確認。

# 認証画面が出てきたら、alertオブジェクトにスイッチ
obj = driver.switch_to.alert
# 1つ目の入力と2つ目の入力の間にTABを入れる。
obj.send_keys(USERNAME + u'\ue004' + PASSWORD)
# 最後にOKを押す。
obj.accept()

補足としてalertというオブジェクトに関しては、OK、Cancel、(Promptの場合)入力という3つの要素しか想定していないようで、場合によってOKは「承認」とか「Accept」とか別の表現をされているケースもあるようですが、全てaccept()というメソッドでクリックできるようです。send_keysに関してもalertだけ指定すればよいみたい。

6
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
6
Help us understand the problem. What is going on with this article?