一、下拉框處理:
網頁上的js彈出框一般有三種情況,且識別不了元素,需要使用switch_to.alert() 進行跳轉
情況一:

這時候需要先跳轉到此彈窗,才能做到自動化點擊確定:
driver.find_element(By.XPATH,"http://input[@name='alterbutton']").click() #切換到彈出框進行處理
time.sleep(2)
value=driver.switch_to.alert.text #獲取彈窗文本內容
driver.switch_to.alert.accept() #點擊確定按鈕
time.sleep(2)
print(value)
這里的time.sleep 是固定等待,為了更好地看到效果
情況二:
這類彈窗需要先跳轉到彈窗,然后輸入內容,再點擊確定 ;或者取消
driver.find_element(By.XPATH,"http://input[@name='promptbutton']").click()
time.sleep(2)
driver.switch_to.alert.send_keys("hello") #輸入內容
time.sleep(2)
driver.switch_to.alert.accept() #點確定
time.sleep(2)
driver.switch_to.alert.accept() #再次點確定
time.sleep(2)
情況三:
這類彈窗需要先跳轉到彈窗,點擊確定 或者點擊取消
driver.find_element(By.XPATH,"http://input[@name='confirmbutton']").click()
time.sleep(2)
driver.switch_to.alert.dismiss() # 點擊取消
time.sleep(2)
driver.switch_to.alert.accept() #點擊確定
time.sleep(2)
二、等待機制
在實際的UI自動化測試過程中,會出現各種突發情況,比如 網絡通訊不暢、電腦卡頓等,都會出現 界面元素加載國棉的場景,此時會導致原本正常的自動化腳本出現 報錯等問題,此時為了增加腳本的穩定性,就要引入等待操作
1.固定等待
time.sleep(10) #參數值填寫10,就固定等待10秒
優點:簡單方便
缺點:時間是設置固定的,很容易出現失效等問題
2.隱式等待
隱式等待是一個全局設置,針對所有的 find——element 都生效
工作機制:每隔0.5秒掃描一次頁面,檢查是否出現元素,如果出現則立即執行后續的代碼,如果等到設置的時間,如100秒,還是沒有檢測到,則報錯
driver.implicitly_wait(1000) #參數值填寫1000秒,就等待1000秒,每隔0.5秒掃描一次頁面
3.顯式等待
顯式等待針對單個元素生效,一般用于自動化測試框架中。工作機制和隱式等待一樣,只不過掃描間隔時間可以自定義,默認是0.5秒
element=WebDriverWait(driver,100,poll_frequency=0.3).until(lambda dr:dr.find_element(By.XPATH,"http://div"))
value = driver.find_element(By.XPATH,"http://div").get_attribute("class")
print( value)
浙公網安備 33010602011771號