質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
BASIC

BASICとは、手続き型言語の一つ。英語に準した簡易な記述になっており、基本的には初心者向けのプログラミング言語です。1970年代以降のコンピュータでよく使用された言語で、様々な拡張を加え現在も利用されています。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

2回答

14721閲覧

Selenium basic (VBA) でダイアログを操作する方法

sasakiwr30m

総合スコア8

BASIC

BASICとは、手続き型言語の一つ。英語に準した簡易な記述になっており、基本的には初心者向けのプログラミング言語です。1970年代以降のコンピュータでよく使用された言語で、様々な拡張を加え現在も利用されています。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2017/06/16 02:47

###前提・実現したいこと

はじめて質問させていただきます。
私は現在、Selenium basic (VBA) でIEの自動化プログラムを作成しています。
具体的にはウェブページのフォームにエクセルのデータを自動で入力して、
最後に送信ボタンを押して送信するというものです。

送信ボタンを押した際に、javascriptのonclickでダイアログが出現し、
処理を続行しますか?「はい」or「いいえ」と聞かれ、
「はい」を押すと処理が続行されます。

###発生している問題・エラーメッセージ

問題はそのダイアログをどのように操作するかということです。
以下に似たような質問があり、試したのですが、
「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」と出て、
動作しませんでした。
https://teratail.com/questions/35496

Selenium basic (VBA) でこうしたダイアログや、ポップアップウインドウのように、別のウインドウに切り替えて操作することは可能なのでしょうか。

ご教授いただけると幸いです。
よろしくお願いいたします。

###該当のソースコード

driver.SwtichTo.Alert.Accept

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

SendKeysで動かすのは安定性に欠けるので、やめたほうが無難でしょう。
ポップアップウィンドウについてはわからないのですが、ダイアログに関しては操作することができます。
以下のような方法になります。

sub seleniumでダイアログを操作() dim objIE as IEDriver set objIE = New IEDriver objIE.start ' ダイアログが表示されるような処理 'Alert型としてダイアログを取得 dim objAlert as alert set objAlert = objIE.SwitchToAlert() with objAlert 'OKを押す .accept 'cancelを押す .dismiss '入力する .sendkeys "abcあいうえお" end with end sub

ちなみに、seleniumのsendkeysメソッドは、キーの入力を行うのではなく、webページの要素に直接文字列を流し込むようなので、安定してます。
他のAlertクラスのメソッドとかは、オブジェクトブラウザ(F2)で確認してみてください。

投稿2020/01/27 04:34

tklsntr

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

VBAからSeleniumを使用したことがないので、
Selenium basic (VBA)を使用したダイアログの削除方法はすぐに回答できないのですが、
Selenium basic (VBA)を使用しても、その他の方法でIEを操作しても
IEがコーディング通りに動いたかどうかは保証されません。
なぜならば、IEに送信した命令が正しく実行されたかどうかをプログラム側で確認できないからです。

よって、Selenium basic (VBA)を使用した方法ではないですが、
それと同等の解決策を下記に記載してみますので、試してみて下さい。

問題あればまた教えて頂けたら再度回答させて頂きます。

' Sleepを実行するためのWindowsAPI Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public Sub SeleniumでIEを操作しているサブ() ' xxxxxxxxxxx ' xxxxxxxxxxx ' xxxxxxxxxxx ' xxxxxxxxxxx ' ↑ここまでSeleniumによる既存の処理 ' ダイアログが出てくるまで待ち合わせ(0.5秒) Sleep 500 ' Enterキーを押下しダイアログを閉じる SendKeys "{ENTER}", True ' もしEnterキーが閉じないタイプのダイアログの場合は閉じるキーを押下して下さい ' 例として "ESC" キーと "O" キーのパターンを記載しておきます。 ' SendKeys "{ESC}", True ' SendKeys "{O}", True End Sub

投稿2017/09/15 07:38

編集2017/09/15 08:38
yamashita_yuich

総合スコア316

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問