アウトプットして苦悩するスマートフォン用の表示で見るアウトプットして苦悩するこの広告は、90日以上更新していないブログに表示しています。(なんか透けてる)1,2はすぐに終わるので良いとして、3はひたすらPDFを添付し続けるという苦行を30分間も強いられます。Aシステムは画面が遷移する度に「読み込み中」ポップアップが3秒程(長いときは5秒以上)表示されます。勉強してるPythonでseleniumを使って自動化してみました本記事ではその際に手こずった点をあげていこうと思いますSeleniumを使うには最低限のHTMLの知識を要するため、事前に簡単なHPを作成しておくのがよいと思いました。InternetExplorer11seleniumで操作するためにはドライバが必要。IEの場合IEDriverServerが必要となります。拡大率を100%にしてあげれば解決。普段のブラウザ操作では頻繁に拡大表示するので高確率でエラーがでちゃいます。要求されたURLからデータを取り出せませんでした。?ネットサーフィンをする時、コンピュータはブラウザからサーバへ情報の提供を申請し、サーバはその申請に応じてブラウザへ情報を送信しているプロキシはブラウザとサーバの間に存在する、中継役であるプロキシが存在することでブラウザは身元を隠すことが出来るメリットがあるインターネット接続を限定的に制限したい時などに設置される原因プロキシが設定されている場合localhost(127.0.0.)への接続にプロキシを経由することがある。プロキシに対してlocalhost(127.0.0.)でアクセスしようとするとプロキシ自体が通信を拒否してしまう。Python〜IEDriverServer間では通信にlocalhostや127.0.0.*が使われている。そのため、PythonからIEdriverServerにアクセスを行う際に、プロキシが接続を拒否してエラーになってしまう。解決法IE→インターネットオプション→接続→LANの設定→詳細設定→プロキシの例外、にlocalhostと127.0.0.*を追加するこれにより、localhostへの接続時にプロキシを経由しなくなるため、エラーは発生しない使用するドライバの指定(Ie)使用するドライバのPATHを引数に指定し、IEのWebDriverのインスタンスを作成します。webdriver.Ie(r"C:¥Users¥ユーザ名¥IEDriverServer.exe")PATHの書き方Windowsならではの問題ですが、windowsのPATHは¥マークで区切られます。#RでもOKウィンドウを切り換える(下記サイトは今回Seleniumを使う上で何度も参考にさせていただきました。)www.seleniumqref.comAシステムで業務を行っていると、新規ウィンドウが立ち上がります。ブラウズの設定のポップアップの発生時を常に新しいタブでポップアップを開くにしているので新規タブで表示されるのですが、Seleniumで操作するブラウザでは関係ないらしく、新規ウィンドウで表示されてしまいます。新規ウィンドウが自動的にSeleniumの操作対象になるのかと思いきや、ウィンドウの切り換え作業を行わないと新規ウィンドウの操作ができないようです。ウィンドウを識別する方法としてwindowhandleという情報を用い、それを元にウィンドウ切り換えを行います。#インデックス番号でwindowhandleを指定して切り換えちなみにdriver.current_window_handleとすると現在操作権のあるウィンドウのwindowhandleだけを取得できますflameの指定HTMLにはfleamという1つのページに複数のページを埋め込むことが出来るタグが存在します。fleamによって分割されているサイトでSeleniumを使いたい時は、欲しい要素がどこのfleamに存在するかをHTMLから判断し、fleam切り換えをする必要があります。ドキュメントファイルのアップロード通常ファイルをアップロードする時は参照をクリックするとエクスプローラが出現してファイルを選ぶ...といった流れになります。そのためSeleniumにもそのような機能が存在するのかと思っていました。毎朝のルーティンでは頻繁に画面を遷移します。遷移するたび読込時間が発生するので、コードの速さにブラウザが追いつかず、要素がありませんでしたと、エラーがでてしまう。そんなときに使えるのがSeleniumの待機です。Wait-待機しないと利用できない要素を見つける時に、指定した時間内ポーリング(条件を満たしたら処理を行わせること)させることができますつまり、指定した時間内で要素が見つかればすぐに次のコードを実行し、待っても要素が見つからなければエラーになる。読み込んでいる間は要素の取得が不可能なので、その間待ってくれます。一度設定してあげればWebDriverが起動中有効だそうです。seconds私は最初の頃time.sleep()で個別に待機させてました。ブラウザの読込が終了してもtime.sleep()に指定した時間はしっかり待機するので、テストコードを試すのに時間がかかってうんざりしていましたが、暗黙的な待機であれば要素が見つかれば即座に次のコードが実行されます。Wait-暗黙的な待機との違いは、個別の箇所に対してより詳細な条件で待機させることができる点です。今回は使わなかったので調べていません。動作が安定しなかったため、明示的な待機を使いました。visibility待機を多用しました。要素が表示されるまで待機する命令です。読者になる検索リンクはてなブログブログをはじめる週刊はてなブログはてなブログPro最新記事PythonでSelenium_ウィンドウの切替え失敗とその対処についてPythonでSeleniumを使い毎朝の業務を自動化させたPyCharmにvenvで作成した仮想環境を設定するmiChecker_アクセシビリティを考慮したWEBサイトの作成を支援するツール毎朝自動で降水確率を教えてくれるプログラムを作りました月別アーカイブはてなブログをはじめよう!Atcさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。