Python3+Selenium3自動(dòng)化測(cè)試

配置好Python環(huán)境和Selenium后,使用PyCharm開始自動(dòng)化測(cè)試吧。

Hello 自動(dòng)化測(cè)試

from selenium import webdriver
import time


dr = webdriver.Firefox()  # 初始化火狐瀏覽器實(shí)例
dr.maximize_window()  # 最大化瀏覽器
dr.get("http://www.baidu.com/")  # 通過get方法打開一個(gè)url網(wǎng)站
print(dr.title)  # 打印頁面title

dr.find_element_by_id("kw").send_keys("python")  # 獲取id是'kw'的元素,設(shè)置值為'Python'
time.sleep(3)  # 強(qiáng)制等待3秒
dr.find_element_by_id("su").click()  # 獲取id是'su'的元素,點(diǎn)擊一下
time.sleep(3)  # 強(qiáng)制等待3秒
dr.quit()  # 關(guān)閉瀏覽器

運(yùn)行!就能看到效果了。
其中time.sleep(3)強(qiáng)制等待3秒才執(zhí)行下面的步驟,有可能3秒過后網(wǎng)頁還沒有加載完,會(huì)發(fā)生不知名的錯(cuò)誤。
那就把3變大一點(diǎn)變成10,time.sleep(10)。如果這樣自動(dòng)化的效率就很低了。??

time.sleep()這是非常重要的一部分
例如在爬取使用ajax、js等方法編寫的網(wǎng)頁就不能確定我們定位的元素是否已經(jīng)加載出來了。當(dāng)元素未加載出來時(shí),我們就去調(diào)用當(dāng)然會(huì)時(shí)常遇到報(bào)錯(cuò)的情況。

在處理這些界面讀取時(shí)常采用以下兩種方法。
方法一 time.sleep() 不推薦,固定等待時(shí)間不能確定是否足夠頁面加載完成
方法二 顯式等待 指滿足某一條件之后再執(zhí)行后面的代碼 可以設(shè)置最長(zhǎng)的等待時(shí)間

顯式等待

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
import time

dr = webdriver.Firefox()  # 初始化火狐瀏覽器實(shí)例
dr.maximize_window()  # 最大化瀏覽器
dr.get("http://www.baidu.com/")  # 通過get方法打開一個(gè)url網(wǎng)站
print(dr.title)  # 打印頁面title
try:
    # 判斷頁面元素是否已經(jīng)加載出來  
    element = WebDriverWait(dr, 10).until(EC.presence_of_element_located((By.ID, "kw")))
    dr.find_element_by_id("kw").send_keys("python")
    dr.find_element_by_id("su").click()
finally:
    time.sleep(3)  # 等待3秒再關(guān)閉瀏覽器
    dr.quit()  # 關(guān)閉瀏覽器

關(guān)于CSS定位

  • id屬性、class、標(biāo)簽定位他們還能組合在一起使用
    以百度首頁為例
    #表示id屬性 .表示class屬性 標(biāo)簽直接使用
dr.find_element_by_css_selector("#kw")  
dr.find_element_by_css_selector(".s_ipt")
dr.find_element_by_css_selector("input")

其中dr.find_element_by_css_selector("#kw")dr.find_element_by_id("kw")是一樣的

  • 組合形式
dr.find_element_by_css_selector("input.s_ipt")
  • 層級(jí)關(guān)系
    這里是input下的span下的a元素
dr.find_element_by_css_selector("input > span > a")
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容