刷新DOM以便Selenium Web驱动程序可以找到elemen

2024-09-24 00:29:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用Selenium的ChromeWeb驱动程序导航到一个页面,然后填写表单。问题是页面加载,然后5秒后显示表单。所以JavaScript在5秒后改变了DOM。我认为这意味着web驱动程序接收到的源代码中不存在表单的htmlid。在

以下是Chrome的inspect功能的外观: page element

但是,该html不会出现在页面的源html中。在

Python用于查找元素:

answerBox = driver.find_element_by_xpath("//form[@id='answer0problem2']")

如何访问此表单中的输入字段?在

有没有办法在不改变页面的情况下刷新web驱动程序?在


Tags: 功能web表单源代码htmlselenium驱动程序页面
1条回答
网友
1楼 · 发布于 2024-09-24 00:29:41

你遇到这个问题是因为你没有给网站足够的时间来加载。

像这样使用time.sleep()

import time
driver.get('http://your.website.com')
time.sleep(15)

plain_text = driver.page_source
soup = BeautifulSoup(plain_text, 'lxml')

这是因为selenium生成它自己的进程,不受python sleep的影响。在这个睡眠时间,无头浏览器继续工作并加载网站。

为每个selenium执行实现一个sleep时间来计算页面加载是很有帮助的。因为python进程与selenium通信的唯一方式是在调用driver时,在页面加载之前调用可能会产生与您描述的类似的后果。

相关问题 更多 >