Pythonセレン操作プルダウンスクロールバーメソッドの概要
UIオートメーションでは、要素を識別できず、見つからないという問題が頻繁に発生します。iframe内にない、xpathまたはidが間違っているなど、多くの理由があります。しかし、現在表示されているページ要素に表示されないものがあり、ドラッグドロップバーを動かすと要素が出てきます。
たとえば、次のWebページでは、ドロップダウンバーをドラッグして、セレンを通じてパスワード入力ボックスの要素を見つける必要があります。
Pythonでこの種の問題を解決するにはいくつかの方法があります。それを必要とする人への簡単な紹介:
方法1) jsスクリプトを使用した直接操作。方法は次のとおりです。
js = "var q = document.getElementById( 'id')。scrollTop = 10000" driver.execute_script(js)
または:
js = "var q = document.documentElement.scrollTop = 10000" driver.execute_script(js)
ここのidはスクロールバーのidですが、jsにはxpathメソッドはありません。
方法2) jsスクリプトを使用して、指定した場所にドラッグします
target = driver.find_element_by_id( "id_keypair") driver.execute_script( "arguments [0] .scrollIntoView();"、target)#可視要素にドラッグ
このメソッドは、スクロールバーを表示する必要のある要素の位置にドラッグできます。このメソッドは、より用途が広く、使用できます。
方法3)ページの表示に従って回避し、タブキーを送信する
この例のページでは、パスワードは入力ボックスです。通常の手動操作中に、タブキーを使用してパスワードボックスに切り替えることができるため、このアイデアによれば、タブキーを送信してpythonで切り替えて要素を表示することもできます
from selenium.webdriver.common.keys import Keys driver.find_element_by_id( "id_login_method_0")。send_keys(Keys.TAB)
更新
少し前にrobotframe作業フレームワークを使用する場合、selenium2libraryには非常に便利な関数Focusがあり、要素を自動的に見つけてソースコードを調べます。
def focus(self、locator): "" "フォーカスを` locator`で識別される要素に設定します。 "" " element = self._element_find(locator、True、True) self._current_browser()。execute_script(" arguments [0]。 focus(); "、要素)
ソースコードから、このメソッドがメソッド2)と一致していることを確認できます。Pythonで自分自身で記述し、ツールがそれをカプセル化します。