我需要自动填报的网页需要调用摄像头,需要进行下图的操作
根据您的描述,您需要在Selenium中使用摄像头,但是在使用Selenium自动打开Chrome浏览器时,无法打开摄像头。这可能是由于Chrome浏览器的默认设置禁用了不安全的来源,从而禁用了摄像头。
一种解决方法是在Selenium中设置Chrome浏览器选项,以允许不安全的来源。您可以使用以下代码来启用Chrome浏览器选项:
ChromeOptions options = new ChromeOptions();
options.addArguments("use-fake-ui-for-media-stream"); // 添加这一行
WebDriver driver = new ChromeDriver(options);
这将启用摄像头,并在Chrome浏览器中打开一个带有摄像头的页面。
另外,您也可以手动打开Chrome浏览器,然后通过Selenium连接到已打开的浏览器。这样,您就可以在打开摄像头的情况下执行自动化测试。
要连接到已打开的Chrome浏览器,请使用以下代码:
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("debuggerAddress", "localhost:9222");
WebDriver driver = new ChromeDriver(options);
这将在本地主机上的端口9222上启动一个远程调试会话,使Selenium可以连接到已打开的Chrome浏览器。请注意,在使用此方法之前,您需要手动启动Chrome浏览器并打开“chrome://inspect”页面。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
这个问题有很多解决方法,我来给您提供一些思路:
这是因为当selenium运行的时候,它的ChromeDriver是运行在一个虚拟机中的,无法直接访问计算机的硬件。但是可以通过配置ChromeDriver的命令行选项来允许它访问计算机的摄像头。具体的步骤是:
下面是一个示例:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--use-fake-ui-for-media-stream')
options.add_argument('--use-fake-device-for-media-stream')
options.add_argument('--use-file-for-fake-video-capture=/path/to/video/file.mp4')
driver = webdriver.Chrome(chrome_options=options)
这个思路比较简单,您可以先手动打开谷歌浏览器,然后在程序中指定ChromeDriver的路径,这样程序就会使用您手动打开的谷歌浏览器进行自动化操作。下面是一个示例:
from selenium import webdriver
driver_path = '/path/to/chromedriver'
browser_path = '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
options = webdriver.ChromeOptions()
options.binary_location = browser_path
driver = webdriver.Chrome(executable_path=driver_path, chrome_options=options)
注意:ChromeDriver的版本和您手动打开的谷歌浏览器的版本要保持一致,否则可能会出现兼容性问题。
希望以上的解决思路能够给您带来帮助。
如果我的回答解决了您的问题,请采纳!
下载地址:https://registry.npmmirror.com/binary.html?path=chromedriver/
找到符合版本号的驱动文件夹
选择适合你电脑的驱动版本,window下载win32的就好了
下载之后,将解压的文件放在python的目录中