Python Selenium 鍵盤滑鼠操作

2021-08-28 13:06:38 字數 3625 閱讀 8194

在自動化測試中,一定會遇到需要使用滑鼠和鍵盤去操作web元素,比如單擊、雙擊、輸入文字等等。在之前的介紹中,我們也使用過.click()、.send_keys()、.clear()這三種基本的操作,今天我們來介紹其他的操作api。

名稱用法

click(on_element=none)

滑鼠左鍵單擊

click_and_hold(on_element=none)

滑鼠左鍵單擊,但不鬆開

context_click(on_element=none)

滑鼠右鍵單擊

double_click(on_element=none)

滑鼠左鍵雙擊

drag_and_drop(source, target)

滑鼠左鍵單擊不鬆開,移動到指定元素後鬆開(即拖拽 )

drag_and_drop_by_offset(source, xoffset, yoffset)

滑鼠左鍵單擊不鬆開,移動到指定座標後鬆開

key_down(value, element=none)

按下鍵盤某個鍵

key_up(value, element=none)

鬆開鍵盤某個鍵

move_by_offset(xoffset, yoffset)

滑鼠移動到某個座標

move_to_element(to_element)

滑鼠移動到某個元素

move_to_element_with_offset(to_element, xoffset, yoffset)

滑鼠移動到距離某個元素的某個距離

pause(seconds)

暫停輸入

release(on_element=none)

在某個元素鬆開滑鼠左鍵

send_keys(*keys_to_send)

在當前元素中輸入值

send_keys_to_element(element, *keys_to_send)

給某個元素輸入值

perform()

相應儲存的動作

reset_actions()

清除所有已儲存的動作

因為我們之前使用過.click()、.send_keys()等方法,當我們用同樣方法去使用上面其他的api時,我們發現彈出了error message

attributeerror:

'webelement'

object has no attribute 'key_down'

這是為什麼呢?

上面**中的api都屬於selenium的一組類,這個類叫做actionchains類。簡單來說,這個類中包含的api是使用鏈式方法來實現的,所有相應的動作,都存在actionchains的乙個佇列當中,當使用perform()後,儲存在佇列中的相應動作,會按照儲存順序被觸發,現在就可以理解了是吧。

使用actionchains類,有兩種方法,一種是鏈式操作,一種是分步操作,但他們的本質都是一樣的,結果也不會有區別。

#鏈式操作

)#分步操作

)

我們用下面的**來操作實踐一下。**中包含了一行字,乙個紅色矩形框,我們使用actionchains類的api實現拖動紅色的矩形框。

from selenium import webdriver

from selenium.webdriver.common.action_chains import actionchains

from time import sleep

driver = webdriver.chrome(

)driver.get(

'')dragger1 = driver.find_element_by_class_name(

'draggable'

)#定位要拖動的矩形框

drag_to = driver.find_element_by_class_name(

'undropped'

)#定位拖動到的位置

action = actionchains(driver)

action.drag_and_drop(dragger1, drag_to)

.perform(

)#拖動矩形框到目標元素處

sleep(2)

driver.quit(

)

我們還可以用其他方式實現,使用下面的**替代。該**首先讓滑鼠移動到紅色矩形框,然後按住不鬆開,再讓滑鼠移動到拖拽的目標元素,最後鬆開滑鼠。

#action.drag_and_drop(dragger1, to).perform() 使用下面**代替此行,實現同一效果

action.move_to_element(dragger1)

.click_and_hold(

).move_to_element(drag_to)

.release(

).perform(

)

# coding = utf-8

from selenium import webdriver

import os

from time import sleep

driver = webdriver.chrome(

)driver.implicitly_wait(10)

driver.get(

)with

open

(os.path.abspath(

'drag_and_drop_helper.js'),

'r')

as js_file:

line = js_file.readline(

) script =

''while line:

script += line

line = js_file.readline(

)driver.execute_script(script +

"$('#column-a').simulatedragdrop();"

)sleep(2)

driver.quit(

)

Python Selenium自動化 模擬鍵盤操作

0.匯入鍵盤類keys 匯入鍵盤類 keys from selenium.webdriver.common.keys import keys1.常用的鍵盤操作 2.例項from selenium import webdriver from selenium.webdriver.common.keys...

Python Selenium環境搭建

安裝python 設定 python 的環境變數 安裝目錄 安裝目錄 scripts 使用 pip安裝 selenium pip install selenium 安裝完python pip工具,在安裝目錄的 scripts 目錄下。在 dos下直接執行 pip install selenium 即...

Python Selenium 學習筆記

1 判斷元素是否存在 try driver.find element.xx a true except a false if a true print 元素存在 elif a false print 元素不存在 2 判斷元素是否顯示 driver.find element by id outputb...