Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java selenium webdriver未定义window.chrome.runtime_Java_Selenium_Selenium Webdriver_Selenium Chromedriver - Fatal编程技术网

Java selenium webdriver未定义window.chrome.runtime

Java selenium webdriver未定义window.chrome.runtime,java,selenium,selenium-webdriver,selenium-chromedriver,Java,Selenium,Selenium Webdriver,Selenium Chromedriver,我正在使用Selenium进行测试。我注意到手动启动Chrome和使用selenium启动Chrome的不同行为。经过大量调查,我将问题归结为JavaScript的window.chrome.runtime,如果从selenium开始,它是未定义的 通过对谷歌的一些研究,我发现人们面临着类似的问题,但他们的解决方案都不适合我 到目前为止,我已尝试删除测试类型开关: ChromeOptions options = new ChromeOptions(); options.setExperiment

我正在使用Selenium进行测试。我注意到手动启动Chrome和使用selenium启动Chrome的不同行为。经过大量调查,我将问题归结为JavaScript的
window.chrome.runtime
,如果从selenium开始,它是
未定义的

通过对谷歌的一些研究,我发现人们面临着类似的问题,但他们的解决方案都不适合我

到目前为止,我已尝试删除
测试类型
开关:

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches", Arrays.asList("test-type"));

还有其他方法可以让它工作吗?

Selenium不会用现有的浏览器配置文件启动浏览器,而是每次创建一个临时配置文件。因此,它不需要发送js来检查任何已安装的插件。要避免未定义的运行时,请使用现有浏览器配置文件

ChromeOptions options = new ChromeOptions();
// edit this path
options.addArguments("user-data-dir=C:\\Users\\pburgr\\AppData\\Local\\Google\\Chrome\\User Data");   
driver = new ChromeDriver(options);

对我来说做这项工作的答案是

代码段:

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches", Arrays.asList("test-type"));

您还没有描述您看到的问题或行为,手动Chrome与使用Selenium的Chrome有什么不同,以及“使其工作”是什么样子的?Javascript检查是否安装了特定的Chrome插件,并因此使用
runtime.sendMessage()
。对于这两种情况,会弹出不同的对话框。但是当使用selenium启动时,runtime
未定义的
,不会弹出任何内容。手动启动chrome时不会发生这种情况。在一些论坛上,我发现这可以追溯到seleniumdriver的一些参数。那些帖子很老了,解决方案对我不起作用。“让它工作”意味着获得与我手动启动chrome相同的结果(因此定义了
运行时
,并且
发送消息()
工作),这对我来说很有效。下面的回答说使用个人资料不起作用。