<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
from time import sleep sleep(3) # 強制等待3秒
缺點:由於Web載入的速度取決於測試的硬體、網速、伺服器的響應時間等因素。如果等待時間太長,容易造成時間浪費,如果等待時間太短又可能會造成在web還沒有載入完所需要定位的element,而出現報錯。
由於等待時間無法確定,使用太多的sleep會影響執行速度,大大地降低效率,所以建議測試中儘量少使用強制等待。
# 隱式等待10s driver.implicitly_wait(10)
簡介:隱式等待是全域性的是針對所有元素,設定等待時間如10秒,如果10秒內出現,則繼續向下,否則拋異常。可以理解為在10秒以內,不停重新整理看元素是否載入出來。
使用場景:隱式等待只需要宣告一次,一般在開啟瀏覽器後進行宣告。宣告之後對整個drvier的生命週期都有效,後面不用重複宣告。隱式等待存在一個問題,那就是程式會一直等待整個頁面載入完成,也就是一般情況下你看到瀏覽器標籤欄那個小圈不再轉,才會執行下一步,但有時候頁面想要的元素早就在載入完成了,但是因為個別js之類的東西特別慢,仍得等到頁面全部完成才能執行下一步。
簡介:顯示等待是單獨針對某個元素,設定一個等待時間如5秒,每隔0.5秒檢查一次是否出現,如果在5秒之前任何時候出現,則繼續向下,一般需要配合該類的 until() 和 until_not() 方法一起用,直到超過設定的最長時間,然後丟擲超時錯誤 TimeoutException,以下介紹幾個最常用的方法:
1. 判斷element是否可見:visibility_of_element_located(locator) (可見代表element非隱藏,並且element寬和高都不等於 0)
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.by import By # 範例 target = EC.visibility_of_element_located(By.ID,'user') # 配合until()使用(等待元素可見) # 5表示 最長超時時間,預設以秒為單位; 1表示檢測的間隔步長,在等待期間,每隔一定時間(預設0.5秒),呼叫until或until_not裡的方法,直到它返回True或False. WebDriverWait(driver, 5, 1).until(EC.visibility_of_element_located(By.ID,'user')) # 配合until_not()使用(等待元素不可見) WebDriverWait(driver, 5, 1).until_not(EC.visibility_of_element_located(By.ID,'user')) # 在類中封裝為一個函數 def wait_eleLocated(self, loc, timeout=30, poll_frequency=0.5, model=None): """ :param loc:元素定位表達;元組型別,表達方式(元素定位型別,元素定位方法),範例:(By.ID, "kw") :param timeout:超時時間 :param poll_frequency:輪詢頻率 :param model:等待失敗時,截圖操作,圖片檔案中需要表達的功能標註 :return:None """ self.logger.info(f'等待"{model}"元素,定位方式:{loc}') try: start = datetime.now() WebDriverWait(self.driver, timeout, poll_frequency).until(EC.visibility_of_element_located(loc)) end = datetime.now() self.logger.info(f'等待"{model}"時長:{end - start}') except TimeoutException: self.logger.exception(f'等待"{model}"元素失敗,定位方式:{loc}') # 截圖 self.save_webImgs(f"等待元素[{model}]出現異常") raise
2. 判斷某個element是否被載入到dom樹:presence_of_element_located(locator) (並不代表該element一定可見)
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By target = EC.presence_of_element_located(By.ID,'user')
3. 判斷某個element中是否可見並且可點選:element_to_be_clickable(locator)
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By target = EC.element_to_be_clickable(By.ID,'user')
4. 判斷某個element是否被選中:element_to_be_selected(element) (一般用在下拉選單)
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By element = driver.find_element_by_class_name('selector') EC.element_to_be_selected(element)
到此這篇關於Selenium 三種等待方式(強制等待、隱式等待、顯示等待)的文章就介紹到這了,更多相關Selenium 等待方式內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45