web-dev-qa-db-ja.com

python Webdriverでマウスオーバーする方法

これは、少なくともJava api:

Actions action = new Actions(driver);
action.moveToElement(element).build().perform();
action.moveByOffset(1, 1).build().perform();

これはPython apiで可能ですか?pythonのWebdriver APIドキュメントには、そのようなものは何も記載されていないようです。 http:// Selenium.googlecode.com/svn/trunk/docs/api/py/index.html

python webdriverでホバー/マウスオーバーはどのように行われますか?

25
Purrell
from Selenium.webdriver.common.action_chains import ActionChains


def hover(self):
    wd = webdriver_connection.connection
    element = wd.find_element_by_link_text(self.locator)
    hov = ActionChains(wd).move_to_element(element)
    hov.perform()
35
user1411110

ドロップダウンリストメニューの項目をクリックする必要があるシナリオを求めていると思います。 python Seleniumを使用して自動化できます。

このアクションを手動で実行するには、まず親メニューの上にマウスを置いてドロップダウンリストメニューを表示する必要があります。次に、表示されるドロップダウンメニューから必要な子メニューをクリックします。

Selenium WebDriverでActionChainsクラスを使用すると、手動で行うのと同じ方法でこの手順を実行できます。メソッドは以下に説明されています-

ステップ1:webdriverモジュールとActionChainsクラスをインポートする

_from Selenium import webdriver
from Selenium.webdriver.common.action_chains import ActionChains
_

ステップ2:Firefoxブラウザーを開き、URLをロードします。

_site_url = 'Your URL'
driver = webdriver.Firefox()
driver.get(site_url)
_

ステップ3:ドライバーオブジェクトを渡してActionChainsオブジェクトを作成する

_action = ActionChains(driver);
_

ステップ4:ページで第1レベルのメニューオブジェクトを検索し、メソッド 'move_to_element()'を使用してこのオブジェクト上にカーソルを移動します。メソッドperform()は、アクションオブジェクトに基づいて構築したアクションを実行するために使用されます。すべてのオブジェクト。

_firstLevelMenu = driver.find_element_by_id("first_level_menu_id_in_your_web_page")
action.move_to_element(firstLevelMenu).perform()
secondLevelMenu = driver.find_element_by_id("second_level_menu_id_in_your_web_page")
action.move_to_element(secondLevelMenu).perform()
_

ステップ5:メソッドclick()を使用して必要なメニュー項目をクリックします

_secondLevelMenu.click()
_

コードの最終ブロックは次のようになります:

_from Selenium import webdriver
from Selenium.webdriver.common.action_chains import ActionChains

site_url = 'Your URL'
driver = webdriver.Firefox()
driver.get(site_url)

action = ActionChains(driver);

firstLevelMenu = driver.find_element_by_id("first_level_menu_id_in_your_web_page")
action.move_to_element(firstLevelMenu).perform()
secondLevelMenu = driver.find_element_by_id("second_level_menu_id_in_your_web_page")
action.move_to_element(secondLevelMenu).perform()

secondLevelMenu.click()
_

作業内容に応じて、driver.find_element_by_id()をSeleniumで利用可能な他のfind_elemntメソッドに置き換えることができます。参考になれば幸いです。

1
Tanmoy Datta