selenium的高階操作
阿新 • • 發佈:2021-06-13
今天接著講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指令碼操作
點選元素的時候,別忘了後邊的括號裡面傳元素
五、視窗滾動
點選元素的時候,別忘了後邊的括號裡面傳元素
六、視窗管理
點選元素的時候,別忘了後邊的括號裡面傳元素
七、檔案上傳
點選元素的時候,別忘了後邊的括號裡面傳元素