2017-08-01 3 views
-1

私はスクリプティングのためにPythonを使用している既存のセレンフレームワークを手渡されました。デバッグ(&その他)の目的のために、現在アクションが取られている要素(入力ボックス、リンク、ドロップダウンなど)を強調したい。Selenium-Pythonを使用してWebページの要素を強調表示するにはどうすればよいですか?

私は関数を定義し、 (以下の例のように)要素を強調表示する必要がある場合は、フレームワークレベルでの解決策が必要です。

  1. Selenium webdriver highlight element before clicking
  2. https://seleniumwithjavapython.wordpress.com/selenium-with-python/intermediate-topics/playing-with-javascript-and-javascript-executor/highlighting-a-web-element-on-webpage/

が、それはPythonのフレームワーク/スクリプトレベル(またはPythonスクリプトに統合することができ、他の言語)で任意のソリューションを実装することが可能であり、Iドンいるので関数を明示的に呼び出す必要はありません。

P.S.私はPythonを使い始めたばかりなので、単純な/まっすぐ進むと私に言い訳をします。誰かが私に既存のソリューションを指し示すことができたり、独自のソリューションを提供できるかどうかは分かります。

+0

デバッグ用の要素を強調表示する必要はありません。ログは何が間違っているかを理解するのに十分なはずです。また、santoshによって提供されたソリューションは、実行を遅くします。 (.3xの要素数) –

+0

私は理解していますが、私が言ったように私はPython(これまでのプログラミングはほとんど行われていません)に新しいので、要素の強調表示により、私は同意する、私は数ヶ月後にログを使用してデバッグに慣れていくだろうが、今は私の問題の解決方法が分かります。 – Nik

+0

これには簡単な解決法はありません。要素を強調表示するそれぞれのアクションごとにラッパーを作成するか、または手動でテストでこのメソッドを呼び出すアクションを実行する前に実行します。どちらの方法でもコストがかかりますが、無効にする必要がある場合はコストがかかります。 –

答えて

1

私はこのコードを試していませんが、これはうまくいくはずです。

import time 

def highlight(element): 
"""Highlights (blinks) a Selenium Webdriver element""" 
    driver = element._parent 
    def apply_style(s): 
    driver.execute_script("arguments[0].setAttribute('style', arguments[1]);",element, s) 
    original_style = element.get_attribute('style') 
    apply_style("background: yellow; border: 2px solid red;") 
    time.sleep(.3) 
    apply_style(original_style) 

これが役に立ちます。ありがとう。

ソース - https://gist.github.com/dariodiaz/3104601

+0

私はこの機能はまだすべての要素のために呼び出す必要があると理解し、クラス/フレームワークレベルで実装されません。私が間違っていれば私を修正してください。 – Nik

+0

これを別のpyファイルとして書き込み、これを実際のクラスファイルにインポートします。必要に応じていつでも使用してください。デフォルトで各要素の要素を強調表示する必要がありましたか? –

+0

はい..それは私がしたいことです。自動化スクリプトの実行時に実行されるすべてのWeb要素を強調表示します。 – Nik

関連する問題