[解決済み] Python Seleniumで要素が存在するかどうかチェックする
質問
私は selenium (firefox) ウェブドライバを使用してウェブページを開き、いくつかのリンクをクリックするなどして、スクリーンショットをキャプチャしているのですが、問題があります。
私のスクリプトは CLI からうまく実行されますが、cronjob を介して実行されると、最初の find_element() テストを通過することができません。いくつかのデバッグを追加するか、または失敗する理由を理解するのに役立つ何かを追加する必要があります。
基本的に、私はログインページに行く前に'log in'アンカーをクリックしなければなりません。要素の構成は次のとおりです。
<a class="lnk" rel="nofollow" href="/login.jsp?destination=/secure/Dash.jspa">log in</a>
find_element By LINK_TEXTメソッドを使っています。
login = driver.find_element(By.LINK_TEXT, "log in").click()
私はPython Noobなので、少し言語と格闘しています...。
A) リンクが実際にパイソンによって拾われることをどのように確認しますか?私はtry/catchブロックを使用する必要がありますか?
B) LINK_TEXTによってより良い/より信頼できるDOM要素を見つける方法はありますか?例:JQueryでは、より具体的なセレクタを使用することができます $('a.lnk:contains(log in)').do_something();
私は主な問題を解決し、それはちょうど指のトラブルだった - 私は正しくないパラメータでスクリプトを呼び出していた - 単純なミスです。
私はまだ、要素が存在するかどうかをチェックする方法についてのいくつかのポインタが欲しいです。また、くだらない time.sleep() 呼び出しを使用する代わりに、暗黙的/明示的な待機の例/説明もあります。
乾杯、ns
どのように解決するのですか?
A) はい。 要素が存在するかどうかを確認する最も簡単な方法は、単に
find_element
の中で
try/catch
.
B) はい、私はいつも2つの理由から、テキストを使用せずに要素を識別するようにしています。
- テキストは変更される可能性が高く、また。
- が重要な場合、ローカライズされたビルドに対してテストを実行することができなくなります。
のどちらかを解決する必要があります。
- xpath を使用して、ID やその他の一意な識別子を持つ親または祖先要素を見つけ、それに一致する子/子孫を見つけるか、または。
- を使用すると、リンク自体の ID または名前、あるいは他の一意の識別子を要求することができます。
フォローアップの質問に対して
try/catch
を使うことで、要素が存在するかどうかを知ることができます。また、待機の良い例がここにあります。
http://seleniumhq.org/docs/04_webdriver_advanced.html
関連
-
[解決済み] 要素を水平方向にセンタリングする方法
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] 与えられたキーがすでに辞書に存在するかどうかをチェックする
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】HTML5入力のプレースホルダの色をCSSで変更する。
-
[解決済み] Pandasの'Freq'タグにはどのような値が有効ですか?
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonの構文に新しいステートメントを追加することはできますか?
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] ファブリック経由でデプロイユーザとしてvirtualenvを有効化する
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?
-
[解決済み] 新しいpip backtrackingの実行時問題の解決