the*_*est 7 python selenium dom exception-handling selenium-webdriver
        for i in driver.find_elements_by_class_name("endorse-count"):
            try:
                i.click()
            except:
                continue
            elem = WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.CLASS_NAME, "dialog-window")))
            src = elem.get_attribute("innerHTML")
            add_skill(name, src)
            WebDriverWait(driver, timeout=10)
运行上面的代码时出现以下错误 -
selenium.common.exceptions.StaleElementReferenceException: Message: u'Element is no longer attached to the DOM' ; Stacktrace: 
    at fxdriver.cache.getElementAt (resource://fxdriver/modules/web_element_cache.js:7646)
换行 -
src = elem.get_attribute("innerHTML")
登录后,我在LinkedIn用户个人资料页面上运行此代码.
我尝试在"i.click()"之后添加以下代码行 -
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
但后来我看到函数"add_skill(name,src)"没有被调用,并且没有调用driver.manage()之后的代码,尽管for循环和i.click()工作正常.
Selenium 尝试在验证目标元素是否已呈现在页面上之前完成操作(例如单击按钮或链接)。Selenium 可以更有耐心,但你必须明确要求他这样做。
例如,如果您正在测试发出 AJAX 请求的内容,您可以尝试如下操作(在 Ruby 中):
# timeout is in seconds
def wait_for_ajax(timeout=x)
 time_limit, interval = (Time.now + timeout), 0.5
 loop do
   break if @driver.execute_script "return jQuery.active == 0"
   sleep interval
   raise "Wait for AJAX timed out after waiting for #{timeout} seconds" if Time.now > time_limit
 end
end
为了确保您的测试完全全面,请始终让 Selenium 在运行任务之前等待元素加载。