我每天都在使用这个selenium代码来下载一个文件,但有时我会收到过时的引用错误。
我如何确保一旦元素是可选择的,就立即单击它?
try:
btnMenu = WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.LINK_TEXT, 'TRANSFERÊNCIA')))
# btnMenu = WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.NAME, 'link2')))
# WebDriverWait(driver, 10).until(EC.element_to_be_clickable(By.NAME, 'link2'))
driver.execute_script("arguments[0].click();", btnMenu)
except StaleElementReferenceException as ex:
print('Elemento obsoleto - botão transferência\n{ex.message}')
btnMenu = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.LINK_TEXT, 'TRANSFERÊNCIA')))
driver.execute_script("arguments[0].click();", btnMenu)
except TimeoutException as ex:
print(f'Link de transferência não encontrado.\n{ex}')
driver.quit()发布于 2022-10-24 21:09:07
我建议使用带有while块的try-except循环,如下所示:
succeed = False
while !succeed:
try:
btnMenu = WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.LINK_TEXT, 'TRANSFERÊNCIA')))
driver.execute_script("arguments[0].click();", btnMenu)
succeed = True
except StaleElementReferenceException as ex:
print('Elemento obsoleto - botão transferência\n{ex.message}')
except TimeoutException as ex:
print(f'Link de transferência não encontrado.\n{ex}')
driver.quit()
succeed = True我不知道你为什么有except TimeoutException as ex:。可能您可以删除它并只使用以下代码:
succeed = False
while !succeed:
try:
btnMenu = WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.LINK_TEXT, 'TRANSFERÊNCIA')))
driver.execute_script("arguments[0].click();", btnMenu)
succeed = True
except:
print('Failed clicking the button, going to try again\n{ex.message}')
driver.quit()但我不确定。
https://stackoverflow.com/questions/74186526
复制相似问题