1. 程式人生 > >selenium模擬滑鼠操作

selenium模擬滑鼠操作

方法列表

perform(self):        ---執行鏈中的所有動作
reset_actions(self):     ---清除儲存在遠端的動作
click(self, on_element=None):   ---滑鼠左鍵單擊
click_and_hold(self, on_element=None):    --滑鼠左鍵單擊,不鬆開
context_click(self, on_element=None):       ---滑鼠右鍵單擊
double_click(self, on_element=None):        ---滑鼠左鍵雙擊
drag_and_drop(self, source, target):        ---拖拽到某個元素後鬆開
drag_and_drop_by_offset(self, source, xoffset, yoffset):        ---拖拽到某個座標後鬆開
key_down(self, value, element=None):        ---某個鍵盤鍵被按下
key_up(self, value, element=None):          ---鬆開某個鍵
move_by_offset(self, xoffset, yoffset):     ---滑鼠移動到某個座標
move_to_element(self, to_element):          ---滑鼠移動到某個元素
move_to_element_with_offset(self, to_element, xoffset, yoffset):        ---移動到距某個元素(左上角)多少的位置
release(self, on_element=None):     ---在某元素上鬆開滑鼠
send_keys(self, *keys_to_send):     ---傳送某些值到當前焦點元素
send_keys_to_element(self, element, *keys_to_send):     ---傳送某些值到指定元素

基本用法

鏈式寫法
ActionChains(driver).click(clk_btn).context_click(right_btn).perform()
 
分步寫法
# 補全化action
actions = ActionChains(driver)
# 裝載單擊動作
actions.click()
# 裝載右擊動作
actions.context_click()
# 執行所有被裝載的動作
actions.perform()

程式碼例項

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
 
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
import time
 
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.implicitly_wait(10)
 
# 右擊
right_click = driver.find_element_by_xpath('//a[@name="tj_trnews"]')
ActionChains(driver).context_click(right_click).perform()

下拉滾動

方法一:
使用js指令碼直接操作

js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)

方法二:
將滾動條手動到指定的位置,這種方法更常用

target = driver.find_element_by_id("id_keypair")
driver.execute_script("arguments[0].scrollIntoView();", target) #拖動到可見的元素去

方法三:
傳送TAB鍵

from selenium.webdriver.common.keys import Keys
driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB)

方法四:
前段時間使用robotframe work框架時,selenium2library裡面有一個非常好用的功能Focus,會自動定位到元素,研讀一下原始碼:

def focus(self, locator):
        """Sets focus to element identified by `locator`."""
        element = self._element_find(locator, True, True)
        self._current_browser().execute_script("arguments[0].focus();", element)

從原始碼中我們可以看到,此方法與我們在python自己寫的方法二)一致,工具給我們做了封裝。

參考文件