python - Python Selenium execute_script jQuery 错误和操作系统之间的差异
问题描述
我正在使用 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 本身联系起来。
我尝试过的事情无济于事:
在我的测试环境中安装了 docker 镜像中不存在的 jquery 相关包(即所有 libjs-jquery* 包)。
尝试在运行触发 DDoS 安全的脚本之前将 jQuery 注入页面。(此外,这不是必需的,因为 jQuery 脚本在测试环境中没有任何注入就可以工作)
尝试
$('html, body')
用定义的变量 (var x = document.getElementsByTagName('html')[0]; x.animate(...
) 交换初始值,尽管我将是第一个承认我可能没有正确这样做
版本:
蟒蛇 3.5
硒(Python)3.141.0
壁虎司机 0.24.0
火狐 ESR 68.1.0
Debian Stretch 和 Kali Linux
任何帮助或故障排除指导将不胜感激。让我知道我是否可以提供任何其他信息。
解决方案
推荐阅读
- git - 如何自动为每个远程查找默认分支?
- reporting-services - 自动 SSRS 报告部署
- python-3.x - 无法使用模块 python_terraform 通过 python 包装器将 variables.tfvars 文件中的值替换为输入变量
- port - 如何更改已发布 Blazor Server 项目的端口?
- angular - 如何在 Angular 11 测试中检查 scss 变量
- javascript - 如何在JS中的元素上获取:悬停样式
- java - 对于这种情况,我可以避免转换为 T 吗?
- javascript - 如何使用javascript仅记录匹配的条件?
- qliksense - QLik Sense 中的数据透视表和集合分析
- python - 如何列出包含数据的最频繁的列组合