日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

aspx ttf文件加载不出来_加载页面信息,刷不出来心态都崩了

發(fā)布時間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 aspx ttf文件加载不出来_加载页面信息,刷不出来心态都崩了 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

出品 | 51Testing軟件測試網(wǎng)

只要訪問過網(wǎng)頁的地球人都知道,很多時候頁面內(nèi)容的加載并非與你的訪問操作實時同步顯現(xiàn)。是什么原因?qū)е碌哪?#xff1f;這是由于大多數(shù)Web應用程序都結(jié)合Ajax/Javascript技術開發(fā),當瀏覽器進行頁面信息加載時,頁面中的元素會在不同的時間間隙內(nèi)陸續(xù)完成加載,比較常見的場景諸如:跟隨你的滾動條下滑,逐步呈現(xiàn)當前圖文信息;鼠標懸停某文本框,自動出現(xiàn)提示文本等。

對于Web自動化測試而言,頁面元素呈現(xiàn)的時間差異會讓元素識別變得相對困難,在未能找到指定元素的情況下,還會引發(fā)各種異常報錯,如“Element not found”等。所幸的是Selenium WebDriver提供了不同的等待類型,助我們較好地解決此類難題。

Selenium WebDriver為用戶提供了“隱式等待”& “顯式等待”兩種等待方式,用于處理重復的頁面加載,頁面元素加載,窗口顯示,彈窗,錯誤消息及Web元素在網(wǎng)頁上的呈現(xiàn)形式,下面我們就這兩種等待形式逐一詳解。

01

WebDriver隱式等待

Selenium中的隱式等待用于通知WebDriver在拋出類似“Element not found”之前要等待一定的時間,默認設置為0。一旦設置了時間,WebDriver將在該時間內(nèi)等待該元素,超過等待時間后,如還未找到該元素,則觸發(fā)相應的異常。

隱式等待服務于當前的整個測試腳本, 即:提供整個測試腳本中每個連續(xù)測試步驟/命令之間的默認等待時間(例如自行設置默認等待時間為20秒)。因此,僅當在執(zhí)行前一個測試步驟/命令后經(jīng)過20秒時才能執(zhí)行后續(xù)測試步驟。

如下Selenium - Python示例中聲明了一個隱式等待,其時間范圍為10秒。這意味著,如果該元素不在10秒內(nèi)出現(xiàn)在頁面上,就會引發(fā)異常。

隱式等待語法(時間以秒為單位):

selenium.webdriver.driver.implicitly_wait(time in seconds)

場景一:僅獲取當前頁面標題

from selenium import webdriverimport unittestclass Wait_demo1(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() self.driver.get("https://mail.qq.com/") self.driver.maximize_window() self.driver.implicitly_wait(10) def test_title(self): t = self.driver.title if(t=="登錄QQ郵箱"): print("\nPASS") else: print("\nFAIL") def tearDown(self): self.driver.quit()02

WebDriver顯式等待

Selenium中的顯式等待用于通知WebDriver在引發(fā)類似“Element not found”異常之前,需要先在設置的最大延遲時間內(nèi)等待某些期望條件的出現(xiàn),這是一種比較聰明的等待方式,但是它只能應用于指定的元素。與隱式等待相比,顯式等待提供了更好的選擇,因為它可以用來等待動態(tài)加載的Ajax元素,針對性和靈活度更強。

如下示例中,我們實現(xiàn)以下操作:

(1)登錄QQ郵箱基礎版;

(2)然后創(chuàng)建顯式等待;

(3)等待頁面元素“收件箱”的出現(xiàn),并且給出的最大時間范圍為20秒;

(4)若元素成功出現(xiàn),獲取元素文本信息,并點擊該元素。

顯式等待語法(時間以秒為單位):

from selenium.webdriver.support.ui import WebDriverWait

WebDriverWait(driver,time).until(expected_conditions.設置等待條件)

場景二:成功登錄后,獲取收件箱元素文本信息,點擊收件箱

from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWait#定義了變量EC表示expected_conditionsfrom selenium.webdriver.support import expected_conditions as ECimport unittestclass ECwait_Demo1(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() self.driver.get("https://mail.qq.com/") self.driver.maximize_window() def test_login_mail(self): # 定位到“基本版”,并點擊 self.driver.find_element(By.LINK_TEXT,"基本版").click() # 輸入用戶名和密碼 self.driver.find_element(By.ID,"u").send_keys("有效賬號") self.driver.find_element(By.ID,"p").send_keys("有效密碼") # 點擊登錄按鈕 self.driver.find_element(By.ID,"go").click() # 顯式等待 20 秒, 等待“收件箱”的出現(xiàn) element = WebDriverWait(self.driver,20) element.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="ct"]/div/div[3]/div[1]/div[1]'))) # 獲取“收件箱”元素中的文本 mail_box = self.driver.find_element(By.XPATH,'/html/body/div/section[1]/div/ul/li[1]/a/span[2]/span[1]') # 打印文本 print(mail_box.text) # 點擊收件箱 mail_box.click() def tearDown(self): self.driver.quit()

以上場景中,設定在規(guī)定時間內(nèi)(20秒)等待“收件箱”元素的出現(xiàn),這里的條件設置“ExpectedConditions”為“visibility_of_element_located”。

顯式等待之所以靈活,還有一個原因是Selenium給我們提供的各類預期條件,除了上面的“visibility_of_element_located”還有(在pycharm中可以通過智能下拉列表來找到當前你需要的那個“預置條件”):

ExpectedConditions帶有多種預期條件:

基于ExpectedCondition預期條件種類較多,下面我們簡單介紹幾個常用的方面,其余以此類推,供大家有興趣自行嘗試:

(1)element_to_be_clickable(element locator)?

預期條件:等待直到該元素可單擊,即該元素應在屏幕上顯示/可見/可操作;

示例代碼:

element = WebDriverWait(self.driver, 20)element.until(EC.element_to_be_clickable((By.ID,"qqLoginTab")))

(2)textToBePresentInElement(element locator,string txt)

預期條件:等待含有指定字符串的元素;

示例代碼:

element = WebDriverWait(self.driver, 20)element.until(EC.text_to_be_present_in_element((By.XPATH,'/html/body/div/div[2]/div[2]/div[2]/div[2]/p[1]'),"常聯(lián)系"))

(3)title_is()

預期條件:等待帶有指定標題的頁面

示例代碼:

element = WebDriverWait(self.driver, 20)element.until(EC.title_is("登錄QQ郵箱"))

03

隱式等待 VS 顯式等待

如果在測試中存在必須同時使用隱式和顯式等待的情況, 假定隱式等待時間設置為20秒,顯式等待時間設置為10秒。

顯式等待中試圖找到一個具有“ ExpectedConditions”條件等待的元素,如果該元素不在顯式等待(10秒)定義的時間范圍內(nèi),那么將使用隱式wait( 20秒)之后,如還未出現(xiàn)再拋出“ElementNotFound”之類的異常。

04

總結(jié)

以上基于Selenium WebDriver中的兩類等待進行深入解析,隱式和顯式這兩種等待各有其優(yōu)勢,大家在Web自動化測試腳本編寫過程中,需要根據(jù)實際情況,恰當?shù)厥褂秒[式和顯式等待。?

END

思考:只針對findelement方法生效的等待方式是哪一個?歡迎小伙伴們在評論區(qū)暢所欲言,友好交流~

推薦閱讀

點擊閱讀?WebDriver和瀏覽器間的競爭關系,Selenium竟然能解決!

點擊閱讀?如何在Python上進行Selenium的彈框操作?

點擊閱讀?想知道Selenium自動化會遇到哪些常見問題?你算來對了!

點擊閱讀?從零到設計Python+Selenium自動化測試框架,如何開始?

點擊閱讀?不可不知的Selenium 8種元素定位方法!

《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的aspx ttf文件加载不出来_加载页面信息,刷不出来心态都崩了的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。