Chrome 如何在Python中使用Selenium覆盖JavaScript函数

cczfrluj  于 2023-10-14  发布在  Go
关注(0)|答案(2)|浏览(126)

我在一个网站上工作,有一个形式和用户应该在网站上上传照片。表单检查图像的高度、重量和大小,以确保图像较大。我有一个机器人是在网站上运行,并被卡住,因为它把一些图像太小。出于我的目的,我希望能够从我用Python编写的selenium脚本中覆盖页面源代码上的JavaScript,这样当我提交一个小文件时,它无论如何都会通过。
下面是JavaScript源代码的屏幕截图:

我不能直接编辑这个,但我可以在开发工具中的if语句之前设置一个断点,然后写“h=300;“、“w=300;"和“size=300;:让它工作,但是我基本上需要能够从selenium内部使用webdriver来做到这一点。
我可以在Chrome内部通过断点和手动输入变量来获得我想要的工作,但我不知道如何在我的机器人中做到这一点。我是这样设置我的驱动程序的:

我在互联网上找遍了,找不到任何关于这个主题的东西。如果我有一个Chrome扩展程序,这似乎是一个可以很好地与内容脚本一起工作的东西,但是这个项目花了我几个小时,如果我不得不用JavaScript重写所有内容,然后为此制作一个扩展程序,那将是一个耻辱。如果有一个简单的方法可以做到这一点,我会洗耳恭听。

3j86kqsm

3j86kqsm1#

除非该对象是全局范围内的,否则没有办法用JavaScript来实现,但你可以用selenium或代理拦截并重写响应。

sbtkgmzw

sbtkgmzw2#

(几乎复制到https://stackoverflow.com/a/77251290/9758790
我建议使用answer中所述的扩展名 * 资源管理器 *。只需将目标脚本替换为您的文件即可。我认为这个扩展是一个很好的改变Chrome的DevTools本地覆盖,因为它可以自动覆盖。
我在Chrome中安装并配置了扩展程序,然后使用

options = Options()
options.add_argument("--user-data-dir=C:/Users/USERNAME/AppData/Local/Google/Chrome/User Data")
driver = webdriver.Chrome(options=options)

加载用户数据以恢复扩展的设置。我不确定是否有更优雅的方式来加载扩展的设置。
仅供参考:如果您想以编程方式更改扩展的设置,可以参考此answer。因此,也许你可以按照answer的建议安装crx,并以这种方式配置扩展。但是,我认为以前的解决方案更方便。

相关问题