selenium處理頁面常見問題(四):鼠標懸停、拖拽、點擊,鍵盤組合鍵

鼠標鍵盤這部分操作用到的是ActionChains這個模塊,這代表一個動作鏈,可以依次執行一系列動作。導包方法爲:

from selenium.webdriver.common.action_chains import ActionChains

ActionChains支持的動作包括:

click(on_element=None):鼠標點擊,如果on_element=None,點擊鼠標當前位置
click_and_hold(on_element=None):鼠標點擊並hold
release(on_element=None):釋放鼠標按鍵,mouse_up 
context_click(on_element=None):鼠標右鍵單擊
double_click(on_element=None):鼠標雙擊
drag_and_drop(source, target):鼠標拖拽,source元素按下,到target元素鬆開
drag_and_drop_by_offset(source, xoffset, yoffset):鼠標根據offset拖拽
move_by_offset(xoffset, yoffset):移動鼠標到offset位置
move_to_element(to_element):移動鼠標到element位置
move_to_element_with_offset(to_element, xoffset, yoffset):移動鼠標至to_element元素的offset位置,以該元素左上角爲基準

key_down(value, element=None):鍵盤按下Keys爲value的鍵,不釋放,value的值定義在selenium.webdriver.common.keys.Keys中
key_up(value, element=None):鍵盤釋放值爲value的鍵
send_keys(*keys_to_send):輸入內容到當前聚焦的元素,keys值也是Keys中的
send_keys_to_element(element, *keys_to_send):輸入內容到某個element

pause(seconds):暫停所有輸入幾秒鐘
reset_actions():清除當前鏈上保存的所有action
perform():執行當前鏈上保存的所有action

一些常用操作:

1. 鼠標懸停某標籤,出現下拉菜單,選擇菜單中的選項

例如百度首頁“設置”標籤,鼠標懸停出現下拉菜單:

menu = driver.find_element_by_link_text("設置")
ActionChains(driver).move_to_element(menu).perform()
driver.find_element_by_xpath('//div[@id="wrapper"]/div[6]/a[1]').click()

2. 鍵盤操作:鍵盤組合鍵

例如鍵盤按下ctrl+c,相當於先按ctrl,再輸入c,再鬆開ctrl

ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()

另:

注意除了 ActionChains類有 send_keys(*keys_to_send)方法外,WebElement 類也有一個 send_keys_to_element(*keys_to_send)方法,這兩個方法對於一般的輸入操作基本上相同,不同點在於以下幾點:

第一:Actions 中的 send_keys(*keys_to_send)對修飾鍵操作後並不會釋放,也就是說當調用 actions.send_keys(Keys.ALT)、 actions.send_keys(Keys.CONTROL)、 action.send_keys(Keys.SHIFT) 的時候,相當於調用 actions.key_down(keys_to_send),而如果在現實的應用中想要模擬按下並且釋放這些修飾鍵,應該先action.reset_actions()重設action,然後再調用 action.send_keys(keys.NULL).perform()取消按下的修飾鍵。

第三點,在 WebDriver 中,我們可以使用 WebElement 類的 send_keys() 來上傳附件,比如 element.send_keys(“D:\\test\\uploadfile\\test.jpg”)上文件,但不能使用ActionChains來上傳附件,因爲type=’file’的輸入框並不支持鍵盤輸入。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章