📜  selenium 中的 elementnotvisibleexception 是什么 (1)

📅  最后修改于: 2023-12-03 15:05:08.906000             🧑  作者: Mango

Selenium中的ElementNotVisibleException是什么

介绍

在使用Selenium自动化测试时,经常会遇到ElementNotVisibleException。这是由于在测试期间,这个元素由于某些原因无法被找到或无法被操作。

ElementNotVisibleException通常是由以下原因造成的:

  • 元素被其他元素遮盖,比如一个弹出框
  • 页面渲染很慢,元素还没有出现
  • 元素被隐藏或者被移除了
解决方法
1. 显式等待

在进行元素定位时,可以使用显式等待。显式等待是指在指定时间内等待元素的出现或可见性,超出时间后如果还是无法满足条件就会抛出TimeoutException异常。以下是一个等待元素可见的示例代码:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'element-id')))
2. 滚动到可见区域

如果元素被其他元素遮盖,可以尝试滚动到可见区域。以下是一个滚动到元素位置的示例代码:

element = driver.find_element(By.ID, 'element-id')
driver.execute_script("arguments[0].scrollIntoView();", element)
3. 隐式等待

隐式等待是指设置一个等待时间,在这个时间内Selenium试图查找元素,如果在等待时间内找到了元素,则执行下一步骤,否则就抛出NoSuchElementException异常。以下是一个设置隐式等待时间的示例代码:

driver.implicitly_wait(10) # 等待10秒钟
结论

通过显式等待、滚动到可见区域、隐式等待等方法都可以解决ElementNotVisibleException。但是需要根据实际情况来选择哪种方法。如果某个元素出现的方式很慢,则可使用显式等待;如果元素被其他元素遮盖,则需要滚动到可见区域;如果整个页面加载很慢,则可以使用隐式等待。