Selenium for Python Elementにフォーカスを当てる
2947 ワード
はじめに
Seleniumで要素をクリックするとフォーカスが移るものだと思っていました。
挙動を監視していると、どうもそうではないように思える事が多々あります。
そこで確実にフォーカスを移す方法を考えてみました。
実装
JavaScriptとPythonを使って実現します。
JavaScript
実際にファーカスを移す処理はJavaScriptで行います。
ここでは、以下のような記述にしてみました。
javascript
arguments[0].focus({"preventScroll": arguments[1]})
Python
上記のJavaScriptをSeleniumから呼び出します。
python
def focusToElement(driver, by, value, preventScroll):
JavaScriptFocusToElement = "arguments[0].focus({'preventScroll': arguments[1]})"
element = driver.find_element(by, value)
driver.execute_script(JavaScriptFocusToElement, element, preventScroll)
実際に使う場合は、以下のようになります。
python
focusToElement(driver, By.XPATH, "//input[@name='cat']", True)
最後に
フォーカスを移す処理を入れてみたら既存のプログラムの安定性が上がりました。
また、スクロールの挙動がおかしかったのが治りました。
明示的にフォーカスを当てるのも考えて方が良いかもしれません。
Author And Source
この問題について(Selenium for Python Elementにフォーカスを当てる), 我々は、より多くの情報をここで見つけました https://qiita.com/BlueSilverCat/items/e1dc9ec65f235a7fff01著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .