自動化

C# Selenium SendKeyメソッドでテキストエリアなどの入力処理が遅い時の対処方法 SendKeyメソッドのタイムアウトもこれで解決!

今回のテーマ

こんにちは、かっぱちゃんです。

皆さん、Seleniumを使用して、Webの自動化を楽しんでいますでしょうか?

SeleniumのSendKeyメソッドを使用して、凄く長い文字列をテキストエリアに入力しようとした時、

「あまりにも時間かかりすぎてやってらんねぇ!!!」となったので、

今回はその対策方法を書いていきます!

KappaChan
今回はSendKeyメソッドの遅さに悩んでいる人向けの記事かっぱ!

対策方法

結論から言うと、SeleniumのExecuteScriptメソッドを使用して、javascriptで入力します。

C#の場合は下記のようなソースコードを書けばできます!!この例では、getElementByIdでidを取得して、そのタグに対して値を入力します。

この記事を読んでいる方はSeleniumが動く環境が整っていると思いますが、環境設定などは下記の記事に書いてあります。

こちらもCHECK

Microsoft Edgeを自動化してみよう1

まえがきContents1 まえがき2 Seleniumの準備3 ブラウザの表示の仕方4 googleでの検索方法5 まとめ はじめまして、かっぱちゃんです! これからC#のSeleniumの使い方に ...

続きを見る

この方法を使用すれば、SendKeyメソッドを使用した時に比べて、1000倍は早くなりますよ!!

SeleniumのExecuteScriptメソッドで引っかかったポイント

上記のプログラムを書いたのはいいもののまだ引っかかるポイントがあったので、そのポイントも残しておきます。

javascriptの構文でエラーが発生していたので、情報が多いのが助かりました^^

引っかかりポイント1

入力したい文字列のシングルコーテションを対処する。

まずはシングルコーテーションに対して、「\'」としてエスケープしてあげましょう。

引っかかりポイント2

入力したい文字列の改行を対処する。

改行がある場合「\r\n」も対処しないとエラーが発生します。私の場合は\r\nを<br>に置き換えて対処しました。

対応例は下記のソースコードです。

上記のようにすることで私のやりたいことができました!!よかったよかった!!

KappaChan
やりたかったことができたかっぱ!!

まとめ

今回はSeleniumのSendKeyメソッドが遅すぎる時の対処方法を記述しました。

今回の例ではidのみですが、classやnameなどでの取得も勿論できます!

JavaScriptで調べれば沢山載っているので、落ち着いて対処してくださいね!!

この記事で皆さんのお役に立てていれば幸いです!それでは、また!!

 

プログラミングを一人で独学をするならプロからオンラインで教えてもらいましょう!10倍効率いいです!!

数多くあるプログラミング教室の中で2つのオンライン教室を厳選しました!どちら共、エンジニアとしての就職までサポートしてくれる本当にオススメの教室です。個別相談は完全無料です!!

カウンセリングは完全無料!未経験でITエンジニアを目指したい方にオススメ!

Webエンジニアになりたい方にオススメ!個別相談は無料!

KappaChan
オンラインのプログラミング教室は本当にオススメかっぱ!!

-自動化

X