selenium自動化測試工具補充
阿新 • • 發佈:2018-11-21
一、等待設定
1、顯式等待
顯式等待是您定義的程式碼,用於在程式碼中繼續進行之前等待某個條件發生。這種情況的極端情況是time.sleep(),它將條件設定為要等待的確切時間段。WebDriverWait的結合預期條件是一種方法。
#!/usr/bin/env python #-*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() wait = WebDriverWait(driver, 10) #設定等待時間為10s driver.maximize_window() #設定視窗最大化 driver.get("https://www.baidu.com/") #搜尋食品相關內容 element = wait.until( EC.presence_of_element_located((By.CSS_SELECTOR ,'#kw')) ).send_keys('食品') EC(Expected Conditions)的常用方法: title_is title_contains presence_of_element_located visibility_of_element_located visibility_of presence_of_all_elements_located text_to_be_present_in_element text_to_be_present_in_element_value frame_to_be_available_and_switch_to_it invisibility_of_element_located element_to_be_clickable staleness_of element_to_be_selected element_located_to_be_selected element_selection_state_to_be element_located_selection_state_to_be alert_is_present
2、隱式等待
隱式等待告訴WebDriver在試圖找到任何不能立即可用的元素(或元素)時輪詢DOM一段時間。預設設定為0。一旦設定完畢,隱式等待就會被設定為WebDriver物件的生命週期。
from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() #設定視窗最大化 driver.implicitly_wait(10) # 隱式等待時間設定為10s driver.get("https://www.baidu.com/") myDynamicElement = driver.find_element_by_id("kw")
二、模擬滑鼠事件
常用方法介紹 from selenium.webdriver.common.action_chains import ActionChains #模擬滑鼠操作的方法 ActionChains(driver) #生成模擬使用者行為 perform() #執行儲存行為 context_click() #右擊事件 double_click() #雙擊事件 drag_and_drop() #拖動 move_to_element() #滑鼠停在一個元素上 click_and_hold() #按下滑鼠左鍵再一個元素上 示例: from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Chrome() wait = WebDriverWait(driver,10) driver.maximize_window() #設定視窗最大化 driver.get("https://www.oldboyedu.com/") element = driver.find_element_by_link_text('大資料開發') #找到標籤 ActionChains(driver).move_to_element(element).perform() #將滑鼠移動到標籤上,顯示隱藏內容 sub_ele = driver.find_element_by_link_text('課程詳情') #點選 sub_ele.click()
三、模擬鍵盤事件
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver.get("https://www.baidu.com/")
ele = driver.find_element_by_css_selector('#kw')
ele.send_keys('python3.6.') #多輸入了一個點號
ele.send_keys(Keys.BACK_SPACE) #退格鍵 此時輸入的就是 python3.6
ele.send_keys(Keys.CONTROL,'a') #全選
ele.send_keys(Keys.CONTROL,'v') #貼上
ele.send_keys(Keys.CONTROL,'c') #複製
ele.send_keys(Keys.CONTROL,'x') #剪下
ele.send_keys(Keys.ENTER) #回車
ele.clear() #清空輸入內容
四、彈框操作
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Chrome()
wait = WebDriverWait(driver,10)
driver.maximize_window() #設定視窗最大化
driver.get(r"C:\Users\admin\Desktop\test.html")
driver.switch_to_alert() #切換到alert框
driver.switch_to_alert().accept() #確認
driver.switch_to_alert().dismiss() #取消
driver.switch_to_alert().send_keys() #有輸入框才能使用,否則報錯
五、瀏覽器視窗切換
常用方法:
driver.window_handles #顯示所有的瀏覽器控制代碼
driver.current_window_handle #顯示當前瀏覽器控制代碼
driver.switch_to_window(driver.window_handles[1]) #切換到新的瀏覽器視窗上,索引從 0 開始
driver.current_url #當前的url
示例:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
wait = WebDriverWait(driver,10)
driver.get("https://www.jd.com/")
element = wait.until(
EC.element_to_be_clickable((By.CSS_SELECTOR,'#J_cate > ul > li:nth-child(1) > a'))
).click()
print(driver.current_url)
print(driver.window_handles)
driver.switch_to_window(driver.window_handles[1]) #切換
print(driver.current_url)
六、元素操作
clear 清除元素內容
send_keys 模擬按鍵輸入
click 點選
submit 提交表單
back 回退
title 標題
maximize_window() 視窗最大化
詳情請參考官網地址:https://selenium-python.readthedocs.io