我正在尝试使用Selenium的Chrome网络驱动程序导航到页面,然后填写表格。问题是页面加载,然后5秒钟后显示表单。因此,JavaScript会在5秒钟后更改DOM。我认为这意味着表单的html ID在Web驱动程序接收的源代码中不存在。
但是该html不会出现在页面的源html中。
用于查找元素的Python:
answerBox = driver.find_element_by_xpath("//form[@id='answer0problem2']")
我将如何访问此表单中的输入字段?
是否可以在不更改页面的情况下刷新Web驱动程序?
答案 0 :(得分:0)
您遇到了这个问题,因为您没有给网站足够的时间来加载。
像这样使用time.sleep()
:
import time
driver.get('http://your.website.com')
time.sleep(15)
plain_text = driver.page_source
soup = BeautifulSoup(plain_text, 'lxml')
之所以有效,是因为硒产生了它自己的过程,并且不受python sleep
的影响。在这段睡眠时间内,无头浏览器会继续运行并加载网站。
为每个硒执行实现sleep
时间以解决页面加载问题很有帮助。因为python进程与selenium通讯的唯一方法是在您调用driver
时进行,所以在页面加载之前进行调用会产生与您所描述的类似的结果。