1. 程式人生 > 其它 >selenium的高階操作

selenium的高階操作

今天接著講selenium的常見的一些操作,內容稍微有點多,慢慢細品,寫的還算較為清晰,請耐心看完

一、滑鼠操作

平時我們做功能測試,都是手動點選滑鼠來完成,那麼同樣可以通過程式碼來完成;比如,開啟百度網站點選左上角的新聞連結,操作滑鼠即可

"""

滑鼠操作:ActionChains

滑鼠右擊:action.context_click()
滑鼠雙擊:action.double_click()
滑鼠移動到某個節點:move_to_element()
滑鼠左鍵按下滑鼠:click_and_hold()
滑鼠相對當前位置進行移動:move_by_offse()
在一個位置按下滑鼠,到另外一個位置釋放:drag_and_drop(ele1,ele2)

release():釋放滑鼠
perform():執行動作

""" import time from selenium.webdriver import Chrome from selenium.webdriver import ActionChains from selenium.webdriver.common.by import By driver = Chrome() driver.implicitly_wait(10) driver.get("https://www.baidu.com/") news_ele = driver.find_element(By.XPATH, '//a[text()="新聞"]') # 建立一個滑鼠物件 action = ActionChains(driver)
# click:點選某個元素 # 點選某個元素;此時點選的百度網站的左上角的新聞連結,實現用滑鼠去點 action.click(news_ele) # 執行動作 action.perform() time.sleep(2) driver.quit()

如果滑鼠來懸浮拖拽怎麼來實現,看下圖

同樣通過程式碼來實現

import time
from selenium.webdriver import Chrome
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

driver 
= Chrome() driver.implicitly_wait(10) driver.get("https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable") # 因為是iframe標籤,所以要進行切換 frame_ele = driver.find_element(By.ID, "iframeResult") driver.switch_to.frame(frame_ele) ele1 = driver.find_element(By.ID, "draggable") ele2 = driver.find_element(By.ID, "droppable") # 建立一個滑鼠物件 action = ActionChains(driver) # 點選按住滑鼠不放;在ele1處按下滑鼠 action.click_and_hold(ele1) # 移動滑鼠到某個ele2上 action.move_to_element(ele2) # 釋放滑鼠 action.release() # 執行動作 action.perform() time.sleep(2) driver.quit()

來看執行後的效果:

當然了,這種從一個位置拖動到另一個位置,不用這麼麻煩,也可以直接用一個已封裝好的方法去實現:drag_and_drop(ele1,ele2),有興趣的可以自己嘗試,道理是一樣的

接下來,拓展一個問題,可不可以根據座標來移動呢?

答:是可以的

import time
from selenium.webdriver import Chrome
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

driver = Chrome()
driver.implicitly_wait(10)
driver.get("https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")

# 因為是iframe標籤,所以要進行切換
frame_ele = driver.find_element(By.ID, "iframeResult")
driver.switch_to.frame(frame_ele)
ele1 = driver.find_element(By.ID, "draggable")
ele2 = driver.find_element(By.ID, "droppable")

# 建立一個滑鼠物件
action = ActionChains(driver)
# 按下ele1這個元素
action.click_and_hold(ele1)
# 根據座標來移動
action.move_by_offset(xoffset=100, yoffset=300)

# 釋放滑鼠
action.release()
# 執行動作
action.perform()

time.sleep(2)
driver.quit()

因此:關於selenium的滑鼠操作,在此做個小總結:

1、要匯入ActionChains這個類,from selenium.webdriver import ActionChains;在這個的基礎上再來談滑鼠操作

2、執行動作:perform不能忘,沒有這個執行動作是無法點選滑鼠實現操作的

3、如果遇到iframe標籤,要先切換好

4、相對於位置來移動座標,最好不要使用,因為每種電腦螢幕的解析度不太一樣,很容易亂的

5、有些方法是已經封裝好的,能簡單使用就最好不要繞圈子,簡單粗暴是最好用的

6、點選元素的時候,別忘了後邊的括號裡面傳元素

7、其實說白了就是一句話;①匯入ActionChains②action.方法③執行動作;想用什麼方法自己去選擇就行

二、選擇下拉框

點選元素的時候,別忘了後邊的括號裡面傳元素

三、鍵盤操作

點選元素的時候,別忘了後邊的括號裡面傳元素

四、JS指令碼操作

點選元素的時候,別忘了後邊的括號裡面傳元素

五、視窗滾動

點選元素的時候,別忘了後邊的括號裡面傳元素

六、視窗管理

點選元素的時候,別忘了後邊的括號裡面傳元素

七、檔案上傳

點選元素的時候,別忘了後邊的括號裡面傳元素