在Selenium-Python-IE 11中出现 "元素不再有效 "的问题。

问题描述 投票:0回答:1

当网页加载时,我必须点击一个超链接。这个点击有时有效,有时无效。当这个点击不起作用时,我就会收到这个问题。

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

这是最经常出现的问题。

在另一个时候,错误地执行javascript和IE驱动程序的命令行已经停止工作(关闭程序)。

这是我必须点击的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()

这有什么问题吗?我必须添加更多的等待或者尝试其他类型的等待?

python selenium click wait
1个回答
0
投票

Stale Element Reference Exception是由于你的元素没有连接到DOM上而引起的。重新初始化抓取块中的元素。.

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()

0
投票

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

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()
© www.soinside.com 2019 - 2024. All rights reserved.