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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何刷新頁面直到正確加載

如何刷新頁面直到正確加載

炎炎設(shè)計(jì) 2021-12-21 10:49:55
我正在嘗試在 python 中使用 selenium web 驅(qū)動(dòng)程序自動(dòng)化一個(gè)網(wǎng)站。由于頁面未正確加載的服務(wù)器錯(cuò)誤而無法獲取可點(diǎn)擊元素時(shí),它會(huì)卡住。我想創(chuàng)建一個(gè)函數(shù),如果它沒有正確加載(更具體地說,如果它沒有獲得可點(diǎn)擊的元素),它將在 15 秒后自動(dòng)刷新頁面。from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support import expected_conditions as ECdriver=webdriver.Chrome(r"C:\Users\Hp\Downloads\chromedriver")driver.get("https://addguru.in/user/index.php")driver.maximize_window()driver.implicitly_wait(15)username=driver.find_element_by_name("username").send_keys("-------")password=driver.find_element_by_name("password").send_keys("-------")driver.implicitly_wait(40)driver.find_element_by_class_name("submit_btn").click()""" I want a function here which automatically refresh the page after each 15 sec if  the submit-btn is not clickable (due to propely loading problem) """browser.find_element_by_id("checkCbtaskdiv").click()driver.implicitly_wait(10)
查看完整描述

3 回答

?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊

當(dāng)這種情況發(fā)生時(shí),您至少應(yīng)該在斷言中發(fā)布警告。這樣你就知道發(fā)生了什么錯(cuò)誤。如果你這樣做了,以下內(nèi)容會(huì)對(duì)你有所幫助......


在頁面初始化時(shí)或在它開始加載相關(guān)頁面時(shí)添加它。你也可以在任何頁面上這樣做,真的。


driver.execute_script('''


    window.errorCount = 0;

    window.onerror = function (error, url, line, column, errorMessage) {


        errorCount ++;

        //** Add whatever you like from the error information to this json string.

        errorJson = '{"code":"' + error.Status + '", "error":"' + error.Status + '", "details":"' + errorMessage + '"}';

        //Appending hidden input with details to document. All console errors can be scraped this way, or just ones that stop page load if you like.

        $("body").append("<input type='hidden' class='console-error-saved' id='" + errorCount 

     + '"' value='" + errorJson + "'");


    }

''')

然后,在您的 Selenium 腳本中,在等待預(yù)期元素出現(xiàn)的同時(shí),如果等待超時(shí)并且仍然找不到該元素,請(qǐng)運(yùn)行以下命令:


pageErrors = driver.execute_script('''

    var json = ""; 

    var errors = $('.console-error-saved'); 

    for(var x=0; x < errors.length; x++) { 


        json += $(errors[x]).text(); 

        if(x < errors.length - 1) { 

            json += ","; 

        } 


    } 

    return "[" + json + "]";

''')

現(xiàn)在從 Python 解析 json 以從字符串中獲取一個(gè)對(duì)象。查找502、503等特定錯(cuò)誤并報(bào)告,然后調(diào)用刷新命令


import json

errors = json.loads(pageErrors)

#... look at the errors and handle them as needed.

# If qualifying error occurred, refresh the page and do your checks again.

driver.refresh()


查看完整回答
反對(duì) 回復(fù) 2021-12-21
?
holdtom

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊

歡迎來到索。這是方法。


# interval - refresh time

# maxTime - maximum time to wait (rather going into infinite loop)

def refresh_browser_until_element_present(locator_type, locator, interval, maxTime):

    startTime = datetime.now()

    elements = []

    while ((datetime.now() - startTime).seconds<maxTime and len(elements) ==0):

        time.sleep(interval)

        driver.refresh()

        if locator_type == 'xpath':

            elements = driver.find_elements_by_xpath(locator)

        elif locator_type == 'css':

            elements = driver.find_elements_by_css_selector(locator)

使用方法:


refresh_browser_until_element_present('css','#checkCbtaskdiv',15,120)


查看完整回答
反對(duì) 回復(fù) 2021-12-21
?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊

快速查看,根據(jù)此答案,您可以設(shè)置driver.find_element_by_class_name("submit_btn")不.click()帶變量的響應(yīng),然后檢查該變量是否不是None


while elements is None:

    elements = driver.find_element_by_class_name("submit_btn")


for e in elements:

    e.click()


查看完整回答
反對(duì) 回復(fù) 2021-12-21
  • 3 回答
  • 0 關(guān)注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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