? ? ? ? 這篇說下ActionChains里常用的幾種鼠標(biāo)操作的方法。
click() | 鼠標(biāo)左鍵單擊 |
double_click() | 鼠標(biāo)左鍵雙擊 |
context_click() | 鼠標(biāo)右鍵單擊 |
move_to_element() | 鼠標(biāo)移動到某個元素上(鼠標(biāo)懸浮操作) |
click_and_hold() | 點擊鼠標(biāo)左鍵,不松開 |
drag_and_drop() | 拖拽到某個元素然后松開 |
drag_and_drop_by_offset() | 拖拽到某個坐標(biāo)然后松開 |
move_by_offset() | 從當(dāng)前位置移動到某個坐標(biāo) |
move_to_element_with_offset() | 移動到距某個元素多遠(yuǎn) |
pause() | 鼠標(biāo)停止操作 |
release() | 在某個元素上釋放鼠標(biāo)按鈕 |
? ? ? ? 以上是常用的鼠標(biāo)操作,這里簡單舉例下平時工作中用到的最多的幾種方法。
目錄
1、click(元素)
2、double_click(元素)
3、context_click()
4、click_and_hold()
5、release()
?6、move_to_element()
7、move_by_offset()
8、move_to_element_with_offset()
9、drag_and_drop()
10、drag_and_drop_by_offset()
1、click(元素)
? ? ? click()就是鼠標(biāo)點擊左鍵的操作,找到需要鼠標(biāo)左鍵點擊的元素后,填入到括號中即可。
from selenium import webdriver #導(dǎo)入selenium模塊的webdriver
from selenium.webdriver import ActionChains #導(dǎo)入ActionChains類
driver = webdriver.Chrome() #webdriver.Chrome()是啟動谷歌瀏覽器然后定義成變量driver
driver.get("https://www.baidu.com") #打開百度瀏覽器
baidu_cl=driver.find_element_by_link_text("新聞") #定位元素新聞按鈕并賦值給baidu_cl
ActionChains(driver).click(baidu_cl).perform() #發(fā)出點擊新聞按鈕的指令并執(zhí)行
2、double_click(元素)
????????double_click()是鼠標(biāo)左鍵雙擊的操作,具體用法和鼠標(biāo)點擊一樣,找到需要雙擊的元素,填寫到括號中即可。
d_click=driver.find_element_by_id("元素id") #定位到某個元素然后定義為d_click
ActionChains(driver).double_click(d_click).perform() #發(fā)出雙擊某個元素的指令并執(zhí)行
3、context_click()
? ? ? context_click()模擬的是鼠標(biāo)右鍵單擊的操作,具體用法同鼠標(biāo)單擊的操作,找到需要鼠標(biāo)右鍵的元素,填寫到括號中即可。
r_click=driver.find_element_by_id("元素id") #定位到某個元素然后定義為r_click
ActionChains(driver).context_click(r_click).perform() #發(fā)出右擊某個元素的指令并執(zhí)行
下面的4、5可以結(jié)合著6、7、8一起使用,就可以模擬鼠標(biāo)拖拽的操作。
4、click_and_hold()
????????click_and_hold()模擬的是點擊元素并且不松開鼠標(biāo)左鍵的操作就是類似人為的按住鼠標(biāo)左鍵不松的行為,具體操作方法為click_and_hold(元素)。
hold_click=driver.find_element_by_id("元素id") #定位到某個元素然后定義為hold_click
ActionChains(driver).click_and_hold(hold_click).perform() #發(fā)出按住某個元素的指令并執(zhí)行
? ?
5、release()
????????release()模擬的是松開鼠標(biāo)的按鍵的操作,一般結(jié)合著上面的click_and_hold()操作使用。
hold_click=driver.find_element_by_id("元素id") #定位到某個元素然后定義為hold_click
ActionChains(driver).click_and_hold(hold_click).release().perform() #發(fā)出按住某個元素的指令,執(zhí)行完后,執(zhí)行松開按鍵的操作
?6、move_to_element()
? ? ? ? move_to_element()是鼠標(biāo)移動到某個元素的操作,可以用來做鼠標(biāo)懸浮使用,比如在百度首頁的設(shè)置,我們得先把鼠標(biāo)放到設(shè)置按鈕上,才可以進行下面的點擊操作,move_to_element()就可以完成這個指令,具體使用方式時,找到需要懸浮的元素,然后填入到括號里即可。
from selenium import webdriver #導(dǎo)入selenium模塊的webdriver
import time #導(dǎo)入time模塊
from selenium.webdriver import ActionChains #導(dǎo)入ActionChains類
driver = webdriver.Chrome() #webdriver.Chrome()是啟動谷歌瀏覽器然后定義成變量driver
driver.get("https://www.baidu.com") #打開百度瀏覽器
driver.maximize_window() #全屏顯示
setting = driver.find_element_by_id("s-usersetting-top") #鼠標(biāo)懸浮在設(shè)置按鈕上
ActionChains(driver).move_to_element(setting).perform() #執(zhí)行上述操作
time.sleep(3) #等待3秒
setting2 = driver.find_element_by_xpath('//*[@id="s-user-setting-menu"]/div/a[4]') #點擊隱私設(shè)置
ActionChains(driver).click(setting2).perform() #執(zhí)行操作
7、move_by_offset()
????????move_by_offset()表示的操作為鼠標(biāo)移動到某個位置,具體使用是需要再move_by_offset()括號里填上方位,原點是當(dāng)前鼠標(biāo)停留的位置,然后分為x軸和y軸,填入的方式為move_by_offset(x,y),以當(dāng)前鼠標(biāo)為原點,向左移動x就填正數(shù),向右則為負(fù)數(shù),向上移動y填正數(shù),向下移動y填負(fù)數(shù),運行完羨慕代碼后會看到鼠標(biāo)停留在了關(guān)閉預(yù)測的位置,并進行了點擊。
from selenium import webdriver #導(dǎo)入selenium模塊的webdriver
import time #導(dǎo)入time模塊
from selenium.webdriver import ActionChains #導(dǎo)入ActionChains類
driver = webdriver.Chrome() #webdriver.Chrome()是啟動谷歌瀏覽器然后定義成變量driver
driver.get("https://www.baidu.com") #打開百度瀏覽器
driver.maximize_window() #全屏顯示
setting = driver.find_element_by_id("s-usersetting-top") #鼠標(biāo)懸浮在設(shè)置按鈕上
ActionChains(driver).move_to_element(setting).perform() #執(zhí)行上述操作
time.sleep(3) #等待3秒
ActionChains(driver).move_by_offset(0,100).click().perform() #執(zhí)行向下移動100個px距離的操作,并進行點擊
8、move_to_element_with_offset()
? ? ? ??move_to_element_with_offset()操作為移動到距離某個元素多少的坐標(biāo),在括號里填寫?move_to_element_with_offset(元素,x,y),先找到某個元素,然后以該元素為原點進行移動。
from selenium import webdriver #導(dǎo)入selenium模塊的webdriver
import time #導(dǎo)入time模塊
from selenium.webdriver import ActionChains #導(dǎo)入ActionChains類
driver = webdriver.Chrome() #webdriver.Chrome()是啟動谷歌瀏覽器然后定義成變量driver
driver.get("https://www.baidu.com") #打開百度瀏覽器
driver.maximize_window() #全屏顯示
setting = driver.find_element_by_id("s-usersetting-top") #鼠標(biāo)懸浮在設(shè)置按鈕上
ActionChains(driver).move_to_element(setting).perform() #執(zhí)行上述操作(不執(zhí)行這個操作看不出來效果)
time.sleep(3) #等待3秒
ActionChains(driver).move_to_element_with_offset(setting,0,100).perform() #移動到設(shè)置按鈕上,然后向下移動100px
9、drag_and_drop()
?????????drag_and_drop()的操作是找到第一個元素,然后按住鼠標(biāo)拖拽到第二個元素的位置。需要再括號里填入兩個元素,起始元素和需要移動到的元素drag_and_drop(起始元素,終止元素)。
start1 = driver.find_element_by_id("起始元素") #定位到某個元素然后定義為start1
stop1 = driver.find_element_by_id("終止元素") #定位到某個元素然后定義為stop1
ActionChains(driver).?drag_and_drop(start1,stop1).perform() #發(fā)出命令定位到start1元素然后按住鼠標(biāo),之后移動到stop1后松開鼠標(biāo),并執(zhí)行
10、drag_and_drop_by_offset()
????????drag_and_drop_by_offset()和9有點類似,操作是定位到某個元素后,以該元素為原點,然后拖拽到某個坐標(biāo),具體寫法為drag_and_drop_by_offset(元素,x,y)。
start2 = driver.find_element_by_id("起始元素") #定位到某個元素然后定義為start2
ActionChains(driver).?drag_and_drop_by_offset(start2,0,100).perform() #發(fā)出命令定位到start2元素然后按住鼠標(biāo),之后拖動到以該元素為原點的向右移動100px的位置,并執(zhí)行
???????如果大家在使用過程中遇到了問題,可以在文章下留言,或者關(guān)注公眾號:劉阿童木的進化記錄,進行留言
? ? ? ? ? ? ? ? ? ?下圖為公眾號二維碼,內(nèi)容會同步發(fā)出,大家可以關(guān)注一起學(xué)習(xí)!文章來源:http://www.zghlxwxcb.cn/news/detail-813354.html
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文章來源地址http://www.zghlxwxcb.cn/news/detail-813354.html
到了這里,關(guān)于Python+Selenium+Unittest 之selenium13--WebDriver操作方法3-鼠標(biāo)操作2的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!