【发布时间】:2018-03-07 17:08:14
【问题描述】:
搜索成功后,我需要获取搜索后页面上出现的href。
enter = present (driver, By.CSS_SELECTOR, "#search-submit")
driver.execute_script ("arguments[0].click()", enter)
elems = driver.find_elements_by_xpath ("//a[@href]")
# this for loop does not work
for elem in elems:
print(elem.get_attribute ("href"))
我来了
StaleElementReferenceException:消息:元素引用已过时
driver.refresh() 不能解决问题。 driver.back() 将改变搜索结果。还能做什么?
更新
弗洛伦特 B 的。解决方案是要走的路。今天我进行了广泛的测试,
像魅力一样工作,速度更快
enter = self.present (driver, By.CSS_SELECTOR, "#search-submit")
driver.execute_script ("arguments[0].click()", enter)
**WebDriverWait (driver, 20).until (EC.staleness_of (enter))**
【问题讨论】:
-
仅出于调试目的,如果您在单击和 findelements 调用之间添加睡眠,比如说 30 秒,这能解决问题吗?
-
@MoeGhafari,谢谢!睡眠 30 秒有效。如果你把你的建议作为答案,我很乐意接受。
-
异常表示在您迭代href时页面被重新加载。为了克服这个问题,在迭代链接之前首先等待一个元素变得陈旧:
wait.until(EC.staleness_of(bt_submit)) -
@FlorentB.,在我的情况下,bt_submit 是什么?
-
@LetzerWille,
bt_submit是由driver.find_element返回的WebElement。
标签: python-3.x selenium firefox selenium-webdriver