Python Selenium execute\u script jQuery错误和操作系统之间的差异

2024-05-19 16:10:15 发布

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

我使用Selenium和Python(3.5)以编程方式浏览站点。这个探索的一个步骤包括滚动到给定页面的底部,我选择使用jQuery这样做,其中driver是webdriver对象,scrollloadtime是我希望滚动所花费的时间:

driver.execute_script("$('html, body').animate({scrollTop: $(document).height() - $(window).height()}, %s);" % scrollloadtime)

这就是事情变得奇怪的地方。当我在测试环境(运行Kali Linux的VM)中运行这段代码时,我对此没有任何问题——在这个环境中运行这行代码我从来没有遇到过问题。你知道吗

但是,当我试图在运行Debian Stretch的docker容器内的完全相同的网页上使用完全相同的包版本(我在下面列出)运行完全相同的代码时,我得到以下错误:

Message: TypeError: $(...).animate is not a function

我想弄清楚为什么会发生这种情况,而不仅仅是解决办法。快把我逼疯了!你知道吗

我当然不是jQuery专家,但根据我对上述错误所做的研究,这通常发生在使用旧的和最小化的jQuery版本时。我自己搞不清楚的是,这个解决方案是如何与Selenium甚至Python本身联系在一起的。你知道吗


我试过的东西,都没有用:

  • 已安装与jquery相关的包,这些包存在于我的测试环境中,但在docker映像中不存在(即所有libjs jquery*包)。

  • 在运行触发DDoS安全的脚本之前,尝试将jQuery注入页面。(另外,这应该不是必需的,因为jQuery脚本在测试环境中没有任何注入就可以工作)

  • 试图用一个定义的变量(var x = document.getElementsByTagName('html')[0]; x.animate(...)交换初始的$('html, body'),尽管我会第一个承认我可能没有正确地这样做


版本:

  • Python 3.5

  • 硒(Python)3.141.0

  • 壁虎河0.24.0

  • Firefox ESR 68.1.0

  • Debian Stretch和Kali Linux


任何协助或故障排除指导将不胜感激。如果我能提供任何其他信息,请告诉我。你知道吗


Tags: 代码版本测试环境linuxhtmldriverseleniumbody