Chromedriver封锁了相机。仅在第一个窗口中工作

时间:2019-05-27 12:42:43

标签: c# selenium webdriver selenium-chromedriver

我需要运行多个Chrome窗口,并且每个窗口都需要运行摄像头。目前,相机仅在第一个Chrome窗口中起作用,而在随后的窗口中被该相机阻止。在第二个窗口和下一个窗口中,甚至在webcamtests.com上,我都知道我的相机已在其他应用程序中使用。

当我手动运行Chrome时,一切正常。仅当我使用webdriver(chromedriver)时才会出现此问题

我尝试了一些镶边选项,例如:

user-data-dir=/my_dir
disable-user-media-security
use-fake-ui-for-media-stream

我什至尝试use-fake-device-for-media-stream-都可以,但是我需要真正的相机。这个选项给了我假的动画。

我现在的代码:

ChromeOptions options = new ChromeOptions();
options.AddArguments("user-data-dir=/ChU/UDA30");
options.AddArguments("disable-infobars");
options.AddArguments("ignore-certificate-errors");
options.AddArguments("ignore-urlfetcher-cert-requests");
options.AddArguments("disable-user-media-security");
options.AddArguments("use-fake-ui-for-media-stream");
options.AddArguments("always-authorize-plugins");
var chromeDriverService = ChromeDriverService.CreateDefaultService();
chromeDriverService.HideCommandPromptWindow = true;
driver_a30 = new ChromeDriver(chromeDriverService, options);

对于每个新窗口,我都有其他user-data-dir。 我想在每个窗口中不仅在第一个窗口中也有摄像头。 有什么解决办法吗?

1 个答案:

答案 0 :(得分:0)

我已经做了一些解决-也许有人和我有同样的问题:

Chrome浏览器正在阻止新的chromedriver网络摄像头。 因此,如果我想在多个Chrome窗口中安装网络摄像头,则只需同时使用一个chromedriver。 因此,我在同一个chromedriver上运行新的Chrome窗口,然后我的摄像头随处可见。

这是我的代码:

driver_chrome.SwitchTo().Window(driver_chrome.WindowHandles.First());
SendKeys.SendWait("^(n)");
System.Threading.Thread.Sleep(500);
driver_chrome.SwitchTo().Window(driver_chrome.WindowHandles.Last()); 
driver_chrome.Navigate().GoToUrl("URL");