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()
添加回答
举报