硒钇11中“元素不再有效”的问题

2024-09-28 23:43:14 发布

您现在位置:Python中文网/ 问答频道 /正文

加载网页时,我必须单击超链接。这种点击有时有效,有时无效。当此单击不起作用时,我收到此问题:

selenium.common.exceptions.StaleElementReferenceException: Message: Element is no longer valid

这是最经常出现的问题

在另一个时间段,执行IE驱动程序的javascript和命令行时出错,已停止工作(关闭程序)

这是我必须单击的html代码

<div class="body">
    <div id="sidebar">
    <ul class="nav nav-list">
        <li class="nav-header">
            PAGOS
        </li>
        <li>
            <a tabindex="-1" href="../../inputNewOutgoing">
                 <span>Crear Pago Saliente</span> 
            </a>
        </li>
...

这是我的python代码:

WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.LINK_TEXT,'Crear Pago Saliente'))).click();

此外,我也尝试过:

WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.XPATH, "//*[@id='sidebar']/ul/li[2]/a/span"))).click()

这个怎么了?我必须添加更多的等待或尝试另一种等待


Tags: 代码dividdriverliulclassuntil
2条回答

由于您的元素未附加到DOM,因此会导致过时元素引用异常。 多次等待可以解决此问题,但最好的解决方案是重新初始化catch块中的元素

try:
    element = driver.find_element(By.XPATH, '//*[@id='sidebar']/ul/li[2]/a/span')
    element.click()
except StaleElementReferenceException as error:
    print(error)
    print('The stale element reference occurred')
    element = driver.find_element(By.XPATH, '//*[@id='sidebar']/ul/li[2]/a/span')
    element.click()

我用这个代码解决了这个问题:

try:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='sidebar']/ul/li[2]/a/span"))).click()
except StaleElementReferenceException as Exception:
    print('StaleElementReferenceException while trying to click the hyperlink, trying to click again')
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='sidebar']/ul/li[2]/a/span"))).click()

相关问题 更多 >