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

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

如何通過(guò) Python 正確使用 Selenium 中的 WebDriverWait?

如何通過(guò) Python 正確使用 Selenium 中的 WebDriverWait?

慕神8447489 2023-02-22 15:57:22
既然這個(gè)問(wèn)題已經(jīng)解決了,我只是想我會(huì)添加一個(gè)編輯。替換這兩個(gè) time.sleep() 使我的程序從 180 秒減少到 30 秒。WebDriverWait 大大改進(jìn)了運(yùn)行時(shí)間。我只是想確定我是否正確設(shè)置了 WebDriverWait。這是我的工作腳本,我使用 time.sleep()for x,sequence in enumerate(table.find_elements_by_xpath('//*[@id="gwzSngrOrderResultPanelRoot"]/table/tbody/tr/td[9]'),1):        driver.find_element_by_xpath(f'//*[@id="gwzSngrOrderResultPanelRoot"]/table/tbody/tr[{x}]/td[9]/span[2]').click()        time.sleep(5)        element = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, '//*[@id="gwzViewResultsModalDialog"]/div/div/div[3]/button')))        seq_info=driver.find_element_by_xpath('//*[@id="gwzViewResultsModalDialog"]/div/div/div[2]/div')        seq_list.append([seq_info.text])        driver.find_element_by_xpath('//*[@id="gwzViewResultsModalDialog"]/div/div/div[3]/button').click()        time.sleep(5)簡(jiǎn)而言之,它遍歷一個(gè)表格,單擊一個(gè)打開(kāi)彈出窗口的按鈕,從彈出窗口中提取文本,然后關(guān)閉所述彈出窗口。我必須等待彈出窗口打開(kāi)并完全關(guān)閉。我目前正在使用 time.sleep(),但我正在嘗試切換到 WebDriverWait。這就是我實(shí)施它的方式。for x,sequence in enumerate(table.find_elements_by_xpath('//*[@id="gwzSngrOrderResultPanelRoot"]/table/tbody/tr/td[9]'),1):        driver.find_element_by_xpath(f'//*[@id="gwzSngrOrderResultPanelRoot"]/table/tbody/tr[{x}]/td[9]/span[2]').click()        element = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, '//*[@id="gwzViewResultsModalDialog"]/div/div/div[3]/button')))        seq_info=driver.find_element_by_xpath('//*[@id="gwzViewResultsModalDialog"]/div/div/div[2]/div')        seq_list.append([seq_info.text])        driver.find_element_by_xpath('//*[@id="gwzViewResultsModalDialog"]/div/div/div[3]/button').click()        time.sleep(5)但是,上述方法不起作用。我收到此錯(cuò)誤:driver.find_element_by_xpath('//*[@id="gwzViewResultsModalDialog"]/div/div/div[3]/button').click()selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable如果我返回 time.sleep(),這就消失了,因此讓我覺(jué)得我一定是錯(cuò)誤地設(shè)置了我的 WebDriverWait。等待是瀏覽器的打開(kāi)和關(guān)閉,所以我們必須等到按鈕出現(xiàn),所以我把按鈕本身的xpath放在了WebDriverWait中。這是正確的設(shè)置嗎?
查看完整描述

1 回答

?
繁花不似錦

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

簡(jiǎn)短的回答,,雖然在語(yǔ)法上是正確的,但您沒(méi)有以最佳方式使用WebDriverWait。

除了WebDriverWait,您還使用time.sleep().

時(shí)間.睡眠(秒)

time.sleep(secs)在給定的秒數(shù)內(nèi)暫停當(dāng)前線(xiàn)程的執(zhí)行。該參數(shù)可以是一個(gè)浮點(diǎn)數(shù),以指示更精確的睡眠時(shí)間。實(shí)際暫停時(shí)間可能比請(qǐng)求的時(shí)間短,因?yàn)槿魏尾东@的信號(hào)都會(huì)在執(zhí)行該信號(hào)的捕獲例程后終止 sleep()。此外,由于系統(tǒng)中其他活動(dòng)的調(diào)度,暫停時(shí)間可能比請(qǐng)求的任意時(shí)間長(zhǎng)。

您可以在How to sleep webdriver in python for milliseconds中找到詳細(xì)的討論

而且,

  • for你打算迭代而不是/tr[{x}]你需要的循環(huán)中//tr[{x}]

  • 要收集您需要使用的所需文本visibility_of_element_located()。

  • <button>本質(zhì)上是交互式的,因此您不需要在需要與它們交互時(shí)才presence_of_element_located()使用它們。element_to_be_clickable()

  • 一個(gè)可能的解決方案:

for x,sequence in enumerate(table.find_elements_by_xpath('//*[@id="gwzSngrOrderResultPanelRoot"]/table/tbody/tr/td[9]'),1):

      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="gwzSngrOrderResultPanelRoot"]/table/tbody//tr[{x}]/td[9]/span[2]'))).click()

      seq_list.append(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//*[@id='gwzViewResultsModalDialog']/div/div/div[2]/div"))).text)

      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="gwzViewResultsModalDialog"]/div/div/div[3]/button'))).click()



查看完整回答
反對(duì) 回復(fù) 2023-02-22
  • 1 回答
  • 0 關(guān)注
  • 267 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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