1. 程式人生 > >selenium自動化測試工具補充

selenium自動化測試工具補充

一、等待設定

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