Selenium Python:StaleElementReferenceException从文件读取并使用单词作为搜索查询

时间:2014-06-11 22:30:02

标签: python selenium web-scraping

我之前的问题是Selenium Python - Access next pages of search results

在为一个关键字成功完成此操作后,我需要从文件中逐行读取这些关键字,并继续搜索。

file1 = open("M:/Users/Cyborg/Desktop/Py/read.txt","r")

网址为http://www.nice.org.uk/

driver.switch_to_default_content()
str2 = file1.readline()
inputElement = driver.find_element_by_name("searchText")
inputElement.clear()
inputElement.send_keys(str2)

这将从文件中读取要搜索的关键字,然后在搜索框中输入。

inputElement.submit()

提交查询。它与我之前提出的问题几乎相同,如果str2是静态的,那么一切都很完美,那就是我定义str2='abc'而不是从文件中读取。但是,只要我尝试从文件中读取并继续搜索,我就会收到此错误

File "M:\Users\Cyborg\Desktop\Py\test.py", line 22, in <module>
    inputElement.submit()
  .
  .
  .
  .

 raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: 'Element not found in the cache - perhaps the page has changed since it was looked up' ;

出于某种原因,我收到了这个错误。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您的问题是,在您执行inputElement.submit()一次后,该网页很可能会被刷新,此时inputElement会变得陈旧。

我认为在每个inputElement之后获取inputElement.submit()的新参考资料会清除它:

inputElement.submit()
inputElement = driver.find_element_by_name("searchText")