第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何讓硒等待多個元素加載

如何讓硒等待多個元素加載

慕村225694 2022-06-14 10:50:22
在繼續(xù)屏幕抓取之前,我正在使用以下代碼等待加載所有 4 個元素;但是,代碼并沒有等待所有 4 個,也沒有拋出超時錯誤——它只是繼續(xù),我在尚未加載的元素上收到錯誤。我缺少什么讓 Selenium 等到所有四個元素都存在后再繼續(xù)?        CSSSelector1_toWaitOn = "#div1 table tbody tr td"        CSSSelector2_toWaitOn = "#div2 table tbody tr:nth-child(5) td"        CSSSelector3_toWaitOn = "#div3 table tbody tr:nth-child(5) td"        CSSSelector4_toWaitOn = "#div4 table tbody tr td"        browser.get(url)        browser_delay = 15  # seconds        try:            WebDriverWait(browser, browser_delay).until(expected_conditions and (                expected_conditions.presence_of_element_located((By.CSS_SELECTOR, CSSSelector1_toWaitOn)) and                expected_conditions.presence_of_element_located((By.CSS_SELECTOR, CSSSelector2_toWaitOn)) and                expected_conditions.presence_of_element_located((By.CSS_SELECTOR, CSSSelector3_toWaitOn)) and                expected_conditions.presence_of_element_located((By.CSS_SELECTOR, CSSSelector4_toWaitOn))))        except TimeoutException:            print("Selenium timeout")```
查看完整描述

3 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗 獲得超3個贊

WebDriverWait.until期望可調(diào)用對象。這是來自其來源的實際片段:


while True:

    try:

        value = method(self._driver)

        if value:

            return value

所有expected_contiditions 都是可調(diào)用對象。因此,在這種情況下,您需要編寫它們,如下所示應(yīng)該可以工作。


class composed_expected_conditions:

    def __init__(self, expected_conditions):

        self.expected_conditions = expected_conditions


    def __call__(self, driver):

        for expected_condition in self.expected_conditions:

            if not expected_condition(driver):

                return False


            return True

并將其傳遞給until


conditions = [

    expected_conditions.presence_of_element_located((By.CSS_SELECTOR, CSSSelector1_toWaitOn)), 

    expected_conditions.presence_of_element_located((By.CSS_SELECTOR, CSSSelector2_toWaitOn)),

    expected_conditions.presence_of_element_located((By.CSS_SELECTOR, CSSSelector3_toWaitOn)),

    expected_conditions.presence_of_element_located((By.CSS_SELECTOR, CSSSelector4_toWaitOn)),

]


WebDriverWait(browser, browser_delay).until(composed_expected_conditions(conditions))



查看完整回答
反對 回復(fù) 2022-06-14
?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗 獲得超12個贊

該方法presence_of_element_located(locator)僅檢查元素是否存在于 DOM 中。這并不意味著元素可以交互。此外,搜索過程找到給定的所有元素locator并返回第一個。

請檢查該元素是否有效、可用且具體。如果列表中有多個元素,請確保您的定位器足夠具體以找到單個元素。


查看完整回答
反對 回復(fù) 2022-06-14
?
牧羊人nacy

TA貢獻(xiàn)1862條經(jīng)驗 獲得超7個贊

與其嘗試將它們?nèi)拷M合成一個等待,不如為每個單獨等待。


...


try:

    wait = WebDriverWait(browser, browser_delay)

    wait.until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, CSSSelector1_toWaitOn))

    wait.until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, CSSSelector2_toWaitOn))

    wait.until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, CSSSelector3_toWaitOn))

    wait.until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, CSSSelector4_toWaitOn))))

except TimeoutException:

    print("Selenium timeout")

請注意,Selenium 中有 3 個級別的元素交互:

  1. present - 元素在 DOM 中。如果您嘗試單擊或從現(xiàn)有(但不可見)元素等獲取文本,ElementNotInteractable則會引發(fā)異常。

  2. 可見 - 元素在 DOM 中并且可見(例如不是不可見,顯示:無等)

  3. clickable - 元素可見且已啟用。在大多數(shù)情況下,這只是……它是可見的嗎?特殊情況是標(biāo)記為禁用的 INPUT 按鈕等元素。使用 CSS 設(shè)置為禁用(灰顯)的元素不被視為禁用。


查看完整回答
反對 回復(fù) 2022-06-14
  • 3 回答
  • 0 關(guān)注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號