自動化

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で調べれば沢山載っているので、落ち着いて対処してくださいね!!

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

 

新しいサイト作りました。アニメのまとめサイトです。

レインボーリアルタイムTwitter(アニメ版)


映画ドキュメンタリ版のブログはこちら
レインボーまとめサイト(映画ドキュメンタリー版)
ポケモンまとめブログはこちら
レインボーまとめサイト(ポケモン版)

-自動化

Ads Blocker Image Powered by Code Help Pro

広告ブロックを検出しました。

ブラウザの広告機能を使用して広告をブロックしていることが検出されました。
ブラウザの広告ブロッカーを無効にし、「更新」をクリックしてください。

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock