前面一章我們講到了一些超綱的內容滑鼠鍵盤事件,不知道各位是否覺得很便捷,滑鼠操作是元素定位的一種利器,很多時候在你無法定位的時候你都可以使用這種方式進行定位,
selenium介紹+簡單的操作
元素定位及下拉框實戰
等待時間+視窗操作
上述兩章可得好好看看,精華都在里面了,可別錯過了,
好了,廢話不多說,本章來說說滑鼠鍵盤操作,看看能幫助你解決哪些事情,
目錄
鍵盤事件
滑鼠操作
鍵盤事件
導包: from selenium.webdriver.common.keys import Keys
首先我們來看看鍵盤事件,我列出了幾種,但是遠不止這一點,你所能想到的復制粘貼剪切都是可以實作的,甚至更多的復雜操作也是可行的,不過,我們用于測驗,就沒必要那么多了,
看看下面的幾種:
| 洗掉鍵(BackSpace) | send_keys(Keys.BACK_SPACE) |
| 空格鍵(Space) | send_keys(Keys.SPACE) |
| 制表鍵(Tab) | send_keys(Keys.TAB) |
| 回退鍵(Esc) | send_keys(Keys.SCAPE) |
| 回車鍵(Enter) | send_keys(Keys.ENTER) |
| 全選(Ctrl+A) | send_keys(Keys.CONTROL, 'a') |
| 復制(Ctrl+C) | send_keys(Keys.CONTROL, 'c') |
| 剪切(Ctrl+X) | send_keys(Keys.CONTROL, 'x') |
| 粘貼(Ctrl+V) | send_keys(Keys.CONTROL, 'v') |
| 鍵盤F1 | send_keys(Keys.F1) |
這里還有其他的F操作,如:F5,F12等,用法一致,要會舉一反三哦,還有很多的鍵盤事件,接下來的例子會舉一個表格中沒有的實體:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
fox = webdriver.Firefox()
fox.get('https://baidu.com')
fox.implicitly_wait(5)
ele = fox.find_element_by_id('kw')
ele.send_keys('清安無別事,處處把喜歡')
# 洗掉一個漢字
ele.send_keys(Keys.BACK_SPACE)
# 洗掉全部
ele.send_keys(Keys.CONTROL,'a')
ele.send_keys(Keys.BACK_SPACE)
fox.quit()
這里有個問題,如果你想把處處把喜歡刪了,其他的不留怎么辦,
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
fox = webdriver.Firefox()
fox.get('https://baidu.com')
fox.implicitly_wait(5)
ele = fox.find_element_by_id('kw')
ele.send_keys('清安無別事,處處把喜歡')
for i in range(6):
ele.send_keys(Keys.LEFT_SHIFT,Keys.ARROW_LEFT,Keys.BACK_SPACE)
fox.quit()
for回圈就能搞定,我這里用到了一個新的東西,就是ARROW_LEFT,就是鍵盤向左移動,這個鍵盤操作就跟我們平時按按鍵盤一樣的,你怎么按的就怎么輸入就好,有左就有右所以還有ARROW_RIGHT操作,
注意:這里有個空格操作,如果你想輸入內容時帶有空格怎么操作呢,別想太復雜了,直接就是手動給一個空格就好,
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
fox = webdriver.Firefox()
fox.get('https://baidu.com')
fox.implicitly_wait(5)
ele = fox.find_element_by_id('kw')
ele.send_keys('清安無別事 處處把喜歡')
ele.send_keys(Keys.ENTER)
fox.quit()
點擊搜索一下是可以用enter鍵代替的,也就是百度輸入中的百度一下,輸入內容后直接鍵盤操作enter一下就好了,
是不是發現這里的enter其實可以換成我們元素定位時所用的click,效果一樣,只是操作方式不一,鍵盤操作,有時候挺方便,有時候他也不是特別的適用,所以糾結的朋友,此處也別太過糾結,隨本意就好,哪個方便用哪個,
滑鼠操作
說到滑鼠操作,上一章各位應該就已經有所接觸了,是不是很方便,它還有其他的操作,看看下面的這個表格,
| click(ele) | 滑鼠左鍵單擊 |
| context_click(ele) | 滑鼠右鍵單擊 |
| double_click(ele) | 滑鼠左鍵雙擊 |
| drag_and_drop(first_ele,second_ele) | 拖動到某個元素后松開 |
| move_to_element(ele) | 滑鼠懸停在一個元素上 |
| click_and_hold(ele) | 滑鼠左鍵單擊,不松開 |
| release | 在某個元素上松開滑鼠左鍵 |
| perform() | 執行上述滑鼠操 |
滑鼠操作也需要匯入一個包:
from selenium.webdriver.common.action_chains import ActionChain
我們來看幾個操作,懸停操作并點擊里面的文庫按鈕:

簡單是使用滑鼠操作進行點擊,
from selenium import webdriver
from selenium.webdriver import ActionChains
fox = webdriver.Firefox()
fox.get('https://baidu.com')
fox.implicitly_wait(5)
ele = fox.find_elements_by_class_name('mnav')[-1]
# 實體化類
action = ActionChains(fox)
# 使用類中的方法,并執行
action.move_to_element(ele).perform()
fox.find_element_by_class_name('s-top-more-content.row-2').click()
fox.quit()
滑鼠操作也有一些其他的操作,這里介紹另外一種:
ActionChains(driver).drag_and_drop_by_offset(news_ele,500,0).perform()
拖拽到某個坐標然后松開
ActionChains(driver).move_by_offset(坐標X,坐標Y).click().perform()
滑鼠從當前位置移動到某個位置
滑動滑塊操作,遇到這種我們可以直接開干,絲毫不膽怯,大膽操作起來,
這里重點講一下drag_and_drop_by_offset,其他的操作都相差不大,交給你們舉一反三了,

攜程這個滑動模塊為為例:我們需要從最左邊滑動到最右邊,我們需要獲取到滑塊框的總寬度,獲取滑塊的寬度,用總寬度-滑塊寬度,在drag_and_drop_by_offset里面填入對應的元素,引數就可以了,
from time import sleep
from selenium import webdriver
from selenium.webdriver import ActionChains
fox = webdriver.Firefox()
fox.implicitly_wait(5)
fox.get('https://passport.ctrip.com/user/reg/home')
# 點擊 同意按鈕
fox.find_element_by_xpath('/html/body/div[6]/div[3]/a[2]').click()
# 定位滑塊,獲取寬度
ele = fox.find_element_by_class_name('cpt-img-double-right-outer')
ele_p = ele.size['width']
# 定位滑塊框的寬度
ele_width = fox.find_element_by_class_name('cpt-drop-bg-container')
ele_l = ele_width.size['width']
# 需要滑動的距離
ele_len = ele_l - ele_p
# 實體化滑鼠操作
action = ActionChains(fox)
# 拖動指定位置并松開,拖動的元素,x軸,y軸
action.drag_and_drop_by_offset(ele,ele_len,0).perform()
sleep(2)
fox.quit()
這里做一點說明,就是滑塊滑動程序中Y軸沒有改變,所以為0,
還有一種就是上一章所講的,滑鼠懸停操作,這個操作淘寶,京東里面都可以直接練習

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
# 實體化火狐瀏覽器
fx = webdriver.Firefox()
fx.get('https://www.baidu.com')
# 定位設定按鈕
res = fx.find_element_by_id('s-usersetting-top')
# 滑鼠懸停在設定的元素上
ActionChains(fx).move_to_element(res).perform()
# 點擊搜索設定
fx.find_element('class name','setpref').click()
fox.quit()
你學會了嗎,超級方便的操作,最后也歡迎私聊騷擾,一起交流,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/302273.html
標籤:其他
