Selenium-Python-IE 11 中 "Element no longer valid" 的问题
Problem with "Element no longer valid" in Selenium-Python-IE 11
加载网页时,我必须单击超链接。此单击有时有效,有时无效。当此点击不起作用时,我收到此问题:
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()
这有什么问题吗?我必须添加更多等待或尝试其他类型的等待?
陈旧元素引用异常是由于您的元素未附加到 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()
加载网页时,我必须单击超链接。此单击有时有效,有时无效。当此点击不起作用时,我收到此问题:
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()
这有什么问题吗?我必须添加更多等待或尝试其他类型的等待?
陈旧元素引用异常是由于您的元素未附加到 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()