如何在使用Selenium(Python)前执行页面上的所有JavaScript?

0 投票
1 回答
30 浏览
提问于 2025-04-13 15:00

我有一个网页,想用Python的Selenium来找到网页中的特定元素。

我遇到的问题是,我想找的所有元素都是通过JavaScript动态生成的。我打印了Selenium脚本获取的整个页面源代码,发现这只是服务器发送给我浏览器的内容——纯粹的HTML,还有一些需要运行的JavaScript脚本,才能在浏览器中显示我看到的页面。

也就是说,我需要用Selenium检查的代码,是我在使用Chrome开发者工具查看元素时看到的代码(当所有脚本都运行完毕后),而现在Selenium得到的只是你右键点击页面选择“查看页面源代码”时看到的那种纯HTML。

目前我在使用Edge浏览器和Edge WebDriver,因为Chrome版本122没有webdriver(只有123...),而Chrome版本123还没有发布。

你知道有什么方法可以确保Selenium获取到的是所有JavaScript脚本都运行后的完整网页吗?

与此同时,我会尝试写一段代码,收集所有的脚本元素并逐个运行,看看这样是否有效,但我直觉上觉得应该有更好的方法!

任何帮助都非常感谢。

谢谢。

1 个回答

0

我添加了一个显式等待来解决这个问题。为此,我找到了每个页面最后加载的内容,结果发现是一个搜索框,然后我就让程序等待这个搜索框加载。下面的代码就是一个等待搜索框加载的例子。记得把'search box name'替换成你自己搜索框的名字。

wait.until(EC.element_to_be_clickable((By.ID, "[search box name]")))

撰写回答