1. 程式人生 > >selenium之元素等待

selenium之元素等待

1.何為元素等待呢?

元素等待:js程式碼執行渲染期間,導致資料/標籤載入緩慢,如果元素沒有載入完成,直接通過find_element去進行定位,會出現元素不存在的異常。

2.元素等待的三種方法

(1) time.sleep(10) 強制性等待,不管元素在設定時間範圍內是否加載出來,都必須要等待固定的時間。

(2)WebDriverWait(10) 智慧等待的方法,最多等待10秒,10秒之後仍然沒有元素,會丟擲異常。10秒內找到這個元素,直接向下執行程式碼。這個方法一般適用於單個元素的等待;

(3)implicitly_wait(10) 最大等待時間10秒,針對的是整個頁面,給當前頁面設定最大等待時間;

3.元素等待舉例


from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Firefox()
#在淘寶中搜索膝上型電腦
driver.get('https://s.taobao.com/search?initiative_id=tbindexz_20170306&ie=utf8&spm=a21bo.2017.201856-taobao-item.2&sourceId=tb.index&search_type=item&ssid=s5-e&commend=all&imgfile=&q=%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%94%B5%E8%84%91&suggest=history_1&_input_charset=utf-8&wq=&suggest_query=&source=suggest')
driver.implicitly_wait(20)

# 在定位價格時,新增元素等待
# 方式一:
# price = WebDriverWait(driver, 20).until(lambda driver:driver.find_element_by_css_selector('.price > strong'))
# print(price.text)

# 方式二:
price = driver.find_element_by_css_selector('.ctx-box > .title > a')
is_display = WebDriverWait(driver, 20).until(lambda driver: price.is_displayed())
# is_displayed()元素是否可見(頁面是否加載出來)

print(is_display)
if is_display:
    # 如果元素可見,再執行點選,輸入,清空等操作
    price.click()
else:
    # 不可見
    pass

driver.close()

相關推薦

selenium元素等待

1.何為元素等待呢?元素等待:js程式碼執行渲染期間,導致資料/標籤載入緩慢,如果元素沒有載入完成,直接通過find_element去進行定位,會出現元素不存在的異常。2.元素等待的三種方法(1) time.sleep(10) 強制性等待,不管元素在設定時間範圍內是否加載出來

selenium如何等待頁面元素載入完成

webdriver中我們用兩種方式進行等待:明確的等待和隱性的等待。 明確的等待 明確的等待是指在程式碼進行下一步操作之前等待某一個條件的發生。最不好的情況是使用Thread.sleep()去設定一段確認的時間去等待。但為什麼說最不好呢?因為一個元素的載入時

selenium元素的定位

   1、id定位:find_element_by_id(self, id_)    通過唯一的id來定位     # coding : uft-8 from selenium import webdriverdriver = webdrive

selenium網頁等待時間

1、為什麼需要設定等待時間: 因為網頁開啟後需要載入對應的資原始檔,頁面渲染,視窗處理等等,我們需要等網頁開啟穩定後才能準確的進行後面的定位等操作 2、等待的分類 (1)強制等待 from time import sleep  sleep(3)  #強制等待5秒後才進行下一步操作;缺點是不

python3 + selenium 元素定位

8種定位方式 定位一個元素 webdriver提供了一系列的物件定位方法,常用的有以下幾種 driver.find_element_by_name()——最常用,簡單 driver.find_element_by_id()——最常用,簡單 driver.fi

Selenium元素等待的4種方法

1.使用Thread.sleep(),這是最笨的方法,但有時候也能用到而且很實用。 2.隱示等待,隱性等待是指當要查詢元素,而這個元素沒有馬上出現時,告訴WebDriver查詢Dom一定時間。預設值是0,但是設定之後,這個時間將在WebDriver物件例項整個生命週期都

selenium元素定位-css

CSS定位方式和XPATH定位方式基本相同,只是CSS定位表示式有其自己的格式。CSS定位方式擁有比XPATH定位速度快,且比XPATH穩定的特性。下面詳細介紹CSS定位方式的使用方法 被測網頁的HTML程式碼  被測程式碼 ①使用絕對路徑定位元素 目的:   在被

selenium設定元素等待

由於指令碼執行速度過快,頁面上有些元素未刷新出來,導致定位元素失敗。為解決這一問題,我們需要在指令碼中加入元素等待。webdriver提供了兩種等待方式:顯式等待和隱身等待。另外還有一種sleep休眠法。1.顯示等待顯示等待是webdriver等待某個條件成立時繼續執行,否則

Selenium元素定位

row ntb orm sna 頁面元素 ont NPU mage link 1.查看頁面元素:ID、class、type、name等。 2.通過webdriver的方法定位: find_element_by_name() find_element_by_id()

【轉載】【selenium+Python WebDriver】元素定位

driver 轉載 ref tails selenium html http url 定位 總結: 感謝“煜妃”《Selenuim+Python之元素定位總結及實例說明》和“Huilaojia123”《selenium WebDriver定位元素學習總結》的文章【轉載】【s

Selenium with Python 008 - WebDriver 元素等待

common alert 定位元素 nor comm ajax技術 http until val 如今大多數Web應用程序使用Ajax技術,當瀏覽器在加載頁面時,頁面上的元素可能並不是同時被加載完成的,這給元素的定位增加了困難。如果因為在加載某個元素時延遲而造成El

web自動化2-selenium基本操作元素定位

main .com blog text lin div spa wid 操作 id driver.find_elenment_by_id("kw") name driver.find_element_by_name("kw") class name diver.find

python selenium-webdriver 元素操作鍵盤操作

height decimal page 常用 trac max keys span web selenium 提供了比較完整的鍵盤操作,在使用的模擬鍵盤操作之前需要我們導入from selenium.webdriver.common.keys import Keys即可,然

Python+Selenium筆記(十):元素等待機制

tor 好的 菜單 自己 定時 場景 ive add nal (一) 前言 突然的資源受限或網絡延遲,可能導致找不到目標元素,這時測試報告會顯示測試失敗。這時需要一種延時機制,來使腳本的運行速度與程序的響應速度相匹配,WebDriver為這種情況提供了隱式等待和顯式等待兩

Selenium+Java元素定位

art pin log 技術 path 通過 cli 元素 ndk //通過完全匹配鏈接來定位 driver.findElement(By.linkText("新聞")).click(); //通過部分匹配鏈接來定位 driver.findElement(By.par

python selenium系列(四)元素等待

ont oot target 方式 ack ges 條件 舉例 內容 一 前言在前面的selenium系列(二)元素定位方式和selenium系列(三)常用操作類型及方法兩節中,已經介紹了web頁面元素的識別定位、操作等技術,可能你會覺得掌握這兩項技術就可以實施web自動化

selenium+python元素定位方式介紹

組合 ima box switcher 關鍵字 NPU span 獲取 今天 網頁自動化測試最基本的要求就是要定位到各個元素,然後才能對該元素進行各種操作(輸入,點擊,清除,提交等),所以今天來總結下Selenuim+Python最基本的幾種定位方式及實例說明,

python+selenium定位web頁面元素三:By 定位元素

用 By 定位元素 有時需要使用定位方法,在具體通過哪種定位方式(id 或 name)根據實際場景而定位,By 就可以設 置定位策略。 find_element(By.ID,"kw") find_element(By.NAME,"wd") find_element(By.CLASS_

python+selenium定位web頁面元素二:css定位

CSS(Cascading Style Sheets)是一種語言,它被用來描述 HTML 和 XML 文件的表現。CSS 使用選擇器來為頁面元素繫結屬性。這些選擇器可以被 selenium 用作另外的定位策略。 CSS 可以比較靈活選擇控制元件的任意屬性,一般情況下定位速度要比 XPath 快,

python+selenium定位web頁面元素:輸入、點選事件觸發

通過前端工具,我們看可以看到頁面上的元素都是由一行一行的程式碼組成。它們之間有層級的組織起 來,每個元素有不同的標籤名和屬性值。那麼在 Selenium 當中就是通過這資訊來找到不同的元素的。 webdriver 提供了八種元素定位方法: id name class n