首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StaleElementReferenceException单击标记

StaleElementReferenceException单击标记
EN

Stack Overflow用户
提问于 2022-10-24 20:32:23
回答 1查看 26关注 0票数 1

我每天都在使用这个selenium代码来下载一个文件,但有时我会收到过时的引用错误。

我如何确保一旦元素是可选择的,就立即单击它?

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2022-10-24 21:09:07

我建议使用带有while块的try-except循环,如下所示:

代码语言:javascript
复制
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:。可能您可以删除它并只使用以下代码:

代码语言:javascript
复制
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()

但我不确定。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74186526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档