selenium 的節(jié)點交互和動作鏈

節(jié)點交互

? ? ? ? ?selenium 可以驅(qū)動瀏覽器來執(zhí)行一些操作,也就是說可以讓瀏覽器模仿執(zhí)行一些操作。比較常見的用法有:輸入文字 send_keys() 方法,清空文字方法 clear() 方法,點擊按鈕時用 click() 方法。

示例如下:

from selenium import webdriver

import time

driver = webdriver.Chrome()

driver.get('https://www.baidu.com')

input_q = driver.find_element_by_id('kw')

input_q.send_keys('iphone')

time.sleep(2)

input_q.clear()

input_q.send_keys('ipad')

button = driver.find_element_by_class_name('bg')

button.click()

time.sleep(3)

driver.close()

? ? ? ? ? 這里首先驅(qū)動了瀏覽器打開了百度,然后用find_element_by_id() 方法獲取搜索框,然后用 send_keys()方法輸入 iphone 文字,等待兩秒后使用 clear() 方法清空了搜索框的內(nèi)容,再次調(diào)用了 send_keys() 方法輸入 ipad 文字,之后再用 find_element_by_class_name() 方法獲取搜索按鈕,最后調(diào)用 click() 方法完成搜索動作。

通過上面的方法,我們就完成了一些常見節(jié)點操作,更多的操作可以參見官方文檔的交互動作介紹:https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webelement

動作鏈

? ? ? ? ? ?在上面的實例中,一些交互動作都是針對某個節(jié)點執(zhí)行的。比如,對于輸入框,我們調(diào)用它輸入文字和清空文字的方法;對于按鈕,就調(diào)用了點擊方法。其實還有另外一些操作,他們沒有特定的執(zhí)行對象,比如鼠標拖拽,鍵盤按鍵等,這些動作用另一種方式來執(zhí)行,那就是動作練。

比如,現(xiàn)在實現(xiàn)一個節(jié)點的拖拽操作,將某個節(jié)點從一處拖拽到另外一處可以這樣實現(xiàn):http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable

from selenium import webdriver

from selenium.webdriver import ActionChains

browser = webdriver.Chrome()

base_url = 'http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'

browser.get(base_url)

browser.switch_to.frame('iframeResult')

source = browser.find_element_by_id('draggable')

target = browser.find_element_by_id('droppable')

actions = ActionChains(browser)

actions.drag_and_drop(source,target)

actions.perform()

? ? ? ? ?首先,代開網(wǎng)頁中的一個拖拽實例,然后依次選中要拖拽的節(jié)點和拖拽到的目標節(jié)點,接著聲明 ActionChains 對象并將其賦值為 actions 變量,然后通過調(diào)用 actions 變量的 drag_and_drop() 方法,在調(diào)用 perfrom() 方法執(zhí)行動作,此時就完成了拖拽操作,如下圖:

拖拽前


拖拽后
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容