哈爾濱建站在線咨詢河北軟文搜索引擎推廣公司
5 、 鼠標(biāo)鍵盤(pán)操作
? ?? ?在瀏覽器中,通常會(huì)用到鼠標(biāo)來(lái)進(jìn)行操作,比如右鍵菜單中選擇一個(gè)操作,在 selenium 中提供了下列鼠標(biāo)相關(guān)操作。
? ?? ?ActionChains 類提供了以下方法:
- 點(diǎn)擊鼠標(biāo):click()
- 右擊鼠標(biāo):context_click()
- 雙擊鼠標(biāo):double_click()
- 拖拽元素:drag_and_drop()
- 長(zhǎng)按鼠標(biāo):click_and_hold()
- 移動(dòng)鼠標(biāo)到元素上:move_to_element()
- 右擊鼠標(biāo):context_click()
- 模擬鍵盤(pán)上下鍵滾動(dòng):send_keys(Keys.PAGE_DOWN) 或 send_keys(Keys.PAGE_UP)
- 模擬鼠標(biāo)滾輪滾動(dòng):execute_script(“window.scrollTo(0, document.body.scrollHeight);”)
5.1 鼠標(biāo)右擊
? ?? ?context_click()是Selenium庫(kù)中的一個(gè)方法,它可以模擬鼠標(biāo)右鍵點(diǎn)擊操作。在瀏覽器中,右鍵點(diǎn)擊會(huì)彈出一個(gè)菜單,該菜單顯示了可用于該元素的所有操作。context_click()方法可用于執(zhí)行此操作并選擇要執(zhí)行的操作。
? ?? ?模擬用戶在 LMD 登陸界面,在輸入郵箱地址的輸入框右鍵,但是這里本身沒(méi)有定義右鍵,所以不能打開(kāi)右鍵,而無(wú)法操作右鍵,如果在項(xiàng)目中有用到,那右鍵后的菜單也可以進(jìn)行定位,并操作。示例:
from selenium import webdriver
driver=webdriver.Firefox()
driver.get ('http://www.chuangyijia.com/admin/login') driver.implicitly_wait(3)
test=driver.find_element_by_id('email')
找到要執(zhí)行右鍵操作的元素ActionChains(driver).context_click(test).perform() 對(duì)被操作元素執(zhí)行右鍵
注意事項(xiàng):
- context_click()方法需要使用ActionChains類,需要先導(dǎo)入該類:from selenium.webdriver.common.action_chains import ActionChains
- 在右鍵點(diǎn)擊后選擇操作時(shí),可以使用send_keys()方法模擬鍵盤(pán)按鍵操作。在這里,我們使用Keys類,該類提供了一些常用鍵的常量,例如:Keys.CONTROL表示Ctrl鍵。
5.2 鼠標(biāo)雙擊
? ?? ?double_click()是一個(gè)鼠標(biāo)事件函數(shù),它會(huì)在鼠標(biāo)雙擊時(shí)被觸發(fā)。雙擊事件是指用戶快速連續(xù)點(diǎn)擊鼠標(biāo)左鍵兩次,一般用于實(shí)現(xiàn)某些特殊操作或者進(jìn)行快速編輯等操作。在雙擊事件中,第一次單擊會(huì)觸發(fā)單擊事件,第二次單擊會(huì)觸發(fā)雙擊事件。
? ?? ?在double_click()函數(shù)中,可以定義一些動(dòng)作和操作,例如打開(kāi)一個(gè)新窗口、刪除一條記錄、選擇一個(gè)項(xiàng)等。它主要被用于圖形用戶界面(GUI)中,如各種框架和庫(kù)中的圖形庫(kù),如Tkinter、Qt、wxWidgets等。因?yàn)樵贕UI中,鼠標(biāo)雙擊事件是一種非常常見(jiàn)的用戶操作。
from selenium import webdriver
driver=webdriver.Firefox()
driver.get ('http://www.chuangyijia.com/admin/login') driver.implicitly_wait(3)
test=driver.find_element_by_id('email')
找到要執(zhí)行右鍵操ActionChains(driver).double_click(test).perform() 對(duì)被操作元素執(zhí)行雙擊
5.3 鼠標(biāo)拖放
? ?? ?在一些 web 頁(yè)面中,一些菜單需要將鼠標(biāo)放上去,才會(huì)顯示它的子菜單,在這種情況下,自動(dòng)化需要模擬人為將鼠標(biāo)放到菜單上。
? ?? ?move_to_element()方法是Selenium中模擬鼠標(biāo)拖放操作的一種方法。它可以將鼠標(biāo)指針移動(dòng)到指定的元素上,然后按住鼠標(biāo)左鍵拖動(dòng)該元素到目標(biāo)位置。
? ?? ?下面通過(guò)百度頁(yè)面來(lái)實(shí)現(xiàn)這個(gè)操作,在百度頁(yè)面中,要對(duì)搜素的設(shè)置進(jìn)行設(shè)置, 這種操作需要將鼠標(biāo)放到頁(yè)面的設(shè)置菜單中,才能看到搜索設(shè)置,才能進(jìn)行下一步的
操作。代碼如下:
driver.get('https://www.baidu.com')
打開(kāi)百度頁(yè)面seting=driver.find_element_by_link_text('設(shè)置')
找到設(shè)置ActionChains(driver).move_to_element(seting).perform() 將鼠標(biāo)移動(dòng)到設(shè)置菜單上
driver.find_element_by_link_text('搜索設(shè)置').click() 點(diǎn)擊設(shè)置下的搜索設(shè)置
注意事項(xiàng):
- move_to_element()方法需要使用ActionChains類,需要先導(dǎo)入該類:from selenium.webdriver.common.action_chains import ActionChains
- 在移動(dòng)到源元素和目標(biāo)元素時(shí),可以使用find_element_by_xpath()方法或其他定位方法來(lái)定位元素。
- click_and_hold()方法按下鼠標(biāo)左鍵不釋放,直到使用release()方法釋放鼠標(biāo)左鍵。
5.4 按鍵用法
? ?? ?使用鍵盤(pán)時(shí),需要導(dǎo)入 selenium.webdriver.common.keys 中的 Keys 模塊。
? ?? ?send_keys() 方法是Selenium WebDriver 中用于模擬輸入的一種方法。它可以向指定的元素或當(dāng)前活動(dòng)的元素發(fā)送鍵盤(pán)輸入,如文本、特殊字符、組合鍵等。
? ?? ?下面代碼模擬用戶通過(guò)鍵盤(pán)向郵箱地址中輸入一個(gè)數(shù)字。
driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys(Keys.NUMPAD3)
Keys.NUMPAD3 表示從鍵盤(pán)輸入數(shù)字 3
? ?? ?下面模擬操作 tab 鍵和 enter 鍵
driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys('lib@163.com')
輸入郵箱driver.find_element_by_xpath('//form[@id="login"]/input[2]'). send_keys('12345678')
輸入密碼driver.find_element_by_xpath('//form[@id="login"]/input[2]'). send_keys(Keys.TAB)
按下 tab 鍵driver.find_element_by_xpath('//form[@id="login"]/button').send_keys(Keys.ENTER)
按下回車鍵
? ?? ?通過(guò)上面的代碼能夠看出,輸入郵箱和密碼之后,按下 tab 鍵,操作會(huì)切換到登陸按鈕上,然后在登陸按鈕上模擬用戶按下 enter 鍵。
? ?? ?當(dāng)然這樣的操作需要按業(yè)務(wù)的順序來(lái)的,否則會(huì)出錯(cuò)。
注意事項(xiàng):
- send_keys() 方法需要使用 WebElement 對(duì)象,需要先通過(guò)元素定位方法(如 find_element_by_xpath())獲取該元素的 WebElement 對(duì)象。
- send_keys() 方法可以一次性輸入多個(gè)字符,使用逗號(hào)分隔,如 send_keys(“123”, “,”, “abc”) 將輸入 “123,abc”。
- send_keys() 方法還可以模擬各種鍵盤(pán)操作,如輸入特殊字符、組合鍵等,具體可以參考 Selenium 官方文檔或相關(guān)教程。
5.5 組合鍵
? ?? ?在 web 頁(yè)面使用鍵盤(pán)除了上面的操作之外,還可能會(huì)有其他操作,比如組合鍵。
? ?? ?接下來(lái),通過(guò)代碼模擬用戶在界面輸入郵箱地址之后,使用 ctrl+a 的方式,將其全選, 然后在使用 ctrl+c 的方式將內(nèi)容復(fù)制出來(lái),登陸成功后,將復(fù)制的內(nèi)容粘貼到創(chuàng)意列表的標(biāo)題中。代碼如下:
driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys('lib@163.com')
輸入郵箱地址driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys(Keys.CONTROL,'a')
將輸入的字符串使用 ctrl+a 鍵全選driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys(Keys.CONTROL,'c')
在按下 ctrl+c,將全選的內(nèi)容復(fù)制到剪切板driver.find_element_by_xpath('//form[@id="login"]/input[2]'). send_keys('12345678')
輸入密碼driver.find_element_by_xpath('//button[contains(text(),"登錄 ")]').click()
登陸#sleep(2)
driver.implicitly_wait(3)
driver.find_element_by_css_selector('#dashboard-menu > li:nth-child(2) > a:nth-child(1)').click()
點(diǎn)擊待審核管理driver.find_element_by_css_selector('#input01').send_keys(Key s.CONTROL,'v')
在搜索欄中的標(biāo)題輸入框中,用 ctrl+v 粘貼到輸入框