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()
添加回答
舉報(bào)