61

hereを読むと、メソッドを持つRenderedWebElementクラスがあったようです。hoverただし、これは Java 専用に作成されたものであり (Python バインディングのドキュメントを検索しても役に立ちませんでした)、Java では非推奨になりました。

Aは、オブジェクトを使用して実行することも、オブジェクトを使用してhover実行することもできません。action_chainsWebElement

Pythonでこれを行う方法についてのアイデアはありますか? 私はここにいましたが、使用RenderedWebElementしているため、あまり役に立ちません。

私が使用している: Python 2.7、Windows Vista、Selenium 2、Python バインディング

編集:オブジェクトのメソッドmouse_overはありselenium.selenium.seleniumますが、スタンドアロン サーバーが既に実行されていないとインスタンスを作成する方法がわかりません。

編集私のように誤解がある場合に備えて、回答としてマークされた返信のコメントを確認してください。

4

2 に答える 2

120

move_to_elementホバーを行うには、メソッドを使用する必要があります。

ここに例があります

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

firefox = webdriver.Firefox()
firefox.get('http://foo.bar')
element_to_hover_over = firefox.find_element_by_id("baz")

hover = ActionChains(firefox).move_to_element(element_to_hover_over)
hover.perform()
于 2011-11-24T19:34:33.113 に答える
6

@AutomatedTester はコミュニティに素晴らしいソリューションを提供してくれました!

以下は私が使用した方法です。

PhantomJSは現在のプロセスでハングすることがあるため、signal を使用して適切に終了しました。

find_element_by_xpathxpathはクロムで簡単に見つけることができるので、私は使用することを好みます。

方法は次のとおりです。

右クリック -> 検査 -> 右クリック -> コピー -> CopyXpath

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import signal

browser = webdriver.PhantomJS()
browser.implicitly_wait(3)

def hover(browser, xpath):
    element_to_hover_over = browser.find_element_by_xpath(xpath)
    hover = ActionChains(browser).move_to_element(element_to_hover_over)
    hover.perform()



browser.service.process.send_signal(signal.SIGTERM)  # kill the specific phantomjs child proc
browser.quit()
于 2018-07-11T05:03:36.413 に答える