1 回答

TA貢獻1851條經驗 獲得超4個贊
簡短的回答,不,雖然在語法上是正確的,但您沒有以最佳方式使用WebDriverWait。
除了WebDriverWait,您還使用time.sleep()
.
時間.睡眠(秒)
time.sleep(secs)
在給定的秒數內暫停當前線程的執行。該參數可以是一個浮點數,以指示更精確的睡眠時間。實際暫停時間可能比請求的時間短,因為任何捕獲的信號都會在執行該信號的捕獲例程后終止 sleep()。此外,由于系統中其他活動的調度,暫停時間可能比請求的任意時間長。
您可以在How to sleep webdriver in python for milliseconds中找到詳細的討論
而且,
在
for
你打算迭代而不是/tr[{x}]
你需要的循環中//tr[{x}]
要收集您需要使用的所需文本
visibility_of_element_located()
。<button>
本質上是交互式的,因此您不需要在需要與它們交互時才presence_of_element_located()
使用它們。element_to_be_clickable()
一個可能的解決方案:
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()
添加回答
舉報