本節(jié)重點(diǎn):
ActionChains 類
context_click() 右擊
double_click() 雙擊
drag_and_drop() 拖動(dòng)
測試的產(chǎn)品中有一個(gè)操作是右鍵點(diǎn)擊文件列表會(huì)彈出一個(gè)快捷菜單,可以方便的選擇快捷菜單中的選擇對文件進(jìn)行操作(刪除、移動(dòng)、重命名),之前學(xué)習(xí)元素的點(diǎn)擊非常簡單:
driver.find_element_by_id(“xxx”).click()
那么鼠標(biāo)的雙擊、右擊、拖動(dòng)等是否也是這樣的寫法呢?例如右擊:
driver.find_element_by_id(“xxx”).context_click()
經(jīng)過運(yùn)行腳本得到了下面的錯(cuò)誤提示:
AttributeError: 'WebElement' object has no attribute 'context_click'
提示右點(diǎn)方法不屬于webelement 對象,通過查找文檔,發(fā)現(xiàn)屬于ActionChains 類,但文檔中沒有具體寫法。這里要感謝 北京-QC-rabbit 的指點(diǎn),其實(shí)整個(gè)python+selenium 學(xué)習(xí)過程都要感謝 北京-QC-rabbit 的指點(diǎn)。
下面介紹鼠標(biāo)右鍵的用法,以快播私有云為例:
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
driver = webdriver.Firefox()
driver.get(http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fwebcloud.kuaibo.com%2F)
#登陸快播私有云
driver.find_element_by_id("user_name").send_keys("username")
driver.find_element_by_id("user_pwd").send_keys("123456")
driver.find_element_by_id("dl_an_submit").click()
time.sleep(3)
#定位到要右擊的元素
qqq =driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[3]/table/tbody/tr/td[2]")
#對定位到的元素執(zhí)行鼠標(biāo)右鍵操作
ActionChains(driver).context_click(qqq).perform()
'''
#你也可以使用三行的寫法,但我覺得上面兩行寫法更容易理解
chain = ActionChains(driver)
implement = driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[3]/table/tbody/tr/td[2]")
chain.context_click(implement).perform()
'''
time.sleep(3) #休眠3秒
driver.close()