我正在尝试等待innerHTML元素加载。这是我的代码的通用版本:
element = WebDriverWait(driver, 120).until(EC.presence_of_element_located((By.XPATH, XPATH)))
element = element.get_attribute('innerHTML')
Element是表格内的tr标签。此代码位于一个循环内,该循环应该在数千个ajax页面上每页运行25x。经过一定的运行后,我继续收到此错误:
selenium.common.exceptions.StaleElementReferenceException: Message: {"errorMessage":"Element is no longer attached to the DOM"...
每次,此错误都源于提供的第二行代码。这让我相信元素正在加载,但innerHTML加载速度不够快,这会引发给定的错误消息。我已经尝试了很多方法来解决这个问题而没有成功。
如何在确认元素存在后让代码等待innerHTML加载?
答案 0 :(得分:1)
你使用python很好,你也可以写这样的等待条件。
innerHTML = WebDriverWait(driver, 5).until(lambda driver: driver.find_element_by_xpath(XPATH).get_attribute("innerHTML"))
或者可能是这样的
WebDriverWait(driver, 5).until(lambda driver: driver.find_element_by_xpath(XPATH).get_attribute("innerHTML") == "expected text")