Python Selenium等待innerHTML

时间:2017-08-27 15:47:22

标签: python ajax python-2.7 selenium phantomjs

我正在尝试等待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加载?

1 个答案:

答案 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")