我有一个ubuntu服务器也有UI。U可以通过启动mvn test命令来执行测试用例。但问题是,当我通过另一台机器的终端对机器执行ssh时,我会得到以下错误-
unknown error: DevToolsActivePort file doesn't exist
(Driver info: chromedriver=2.40.565383 (76257d1ab79276b2d53ee976b2c3e3b9f335cde7),platform=Linux 4.4.0-121-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 60.04 seconds
Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T18:33:54.468Z'
System info: host: 'ubuntu-test', ip: 'X.X.X.X', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-121-generic', java.version: '1.8.0_171'
Driver info: driver.version: ChromeDriver
但是,如果我通过remmina远程控制机器,然后执行该机器终端的相同命令,则相同的命令将成功启动chrome。
尝试运行selenium-server不带sudo
-特权:
java -jar path/to/selenium-server-standalone.jar
当我试图在headless模式下运行selenium UI测试用例时,我遇到了类似的问题。这是因为我没有显示服务器。启动Xvfb对我来说很有效。
sudo yum-y安装Xvfb libXfont Xorg
sudo yum-y group安装“X窗口系统”“桌面”“字体”“通用桌面”
Xvfb:99-屏幕0 1024x768x24
导出显示=:1
Chrome在启动期间崩溃的一个常见原因是在Linux上以root
用户(管理员
)身份运行Chrome。虽然可以通过在创建WebDriver会话时传递--no sandbox
标志来解决此问题,但这样的配置不受支持,并且非常不推荐。您需要将您的环境配置为以普通用户身份运行Chrome
此错误消息。。。
unknown error: DevToolsActivePort file doesn't exist
...表示ChromeDriver无法启动/生成新的WebBrowser,即Chrome浏览器会话。
您的代码试用和所有二进制文件的版本控制信息会给我们一些关于出错原因的提示。
但是,根据Add--disable dev shm usage to default launch flags,添加参数--disable dev shm usage
似乎可以暂时解决问题。
如果您希望启动/跨越新的Chrome浏览器会话,可以使用以下Java解决方案:
System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("start-maximized"); // open Browser in maximized mode
options.addArguments("disable-infobars"); // disabling infobars
options.addArguments("--disable-extensions"); // disabling extensions
options.addArguments("--disable-gpu"); // applicable to windows os only
options.addArguments("--no-sandbox"); // Bypass OS security model
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");
根据基本开关。ccdisable dev shm usage
似乎仅在Linix操作系统上有效:
#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
// The /dev/shm partition is too small in certain VM environments, causing
// Chrome to fail or crash (see http://crbug.com/715363). Use this flag to
// work-around this issue (a temporary directory will always be used to create
// anonymous shared memory files).
const char kDisableDevShmUsage[] = "disable-dev-shm-usage";
#endif
在讨论中,添加一个使用/tmp而不是/dev/shm的选项,David提到:
我认为这将取决于如何安装/dev/shm和/tmp。如果它们都安装为tmpfs,我想不会有任何区别。如果出于某种原因/tmp没有映射为tmpfs(我认为systemd默认映射为tmpfs),chrome共享内存管理在创建匿名共享文件时总是将文件映射到内存中,因此即使在这种情况下也不会有太大区别。我想你可以在启用该标志的情况下强制进行遥测测试,然后看看结果如何。
至于为什么不默认使用,这是由共享内存团队推出的,我想这是有道理的,它应该默认使用共享内存的 /dev/shm。
最终,所有这些都应该转向使用memfd_create,但我认为这不会很快发生,因为这将需要对Chrome内存管理进行重大重构。
您可以在以下内容中找到一些详细的讨论:
下面是沙盒故事的链接。
iam运行一个硒脚本,并继续得到上述错误。这是代码: 所以代码中的注释行对我不起作用。当我添加这一行时,我总是得到这个错误: 并且代码在没有添加上述代码行的情况下也能正常工作。 以下是关于该错误的更多信息: 系统信息: 视窗 7 SP-1 64 位 Chrome信息:版本71.0.3578.98(官方版本)(64位) Java 版本: 10.0.1 请帮我做这件事。
问题内容: 我正在尝试使用URL启动chrome,浏览器启动,此后它什么也不做。 1分钟后,我看到以下错误: 我的配置: Chrome:66 Chrome浏览器:2.39.56 PS 在Firefox中一切正常 问题答案: 更新: 我可以解决问题,现在可以使用所需的网址访问Chrome。 尝试提供的解决方案的结果: 我尝试了上面提供的所有设置,但无法解决问题 有关问题的说明: 根据我的观察,当ch
null p.s在Firefox中一切正常
我一直在尝试改变从到服务,但它不工作。脚本如下所示: 我创建了两个不同的服务,如下所示: (Stackoverflow不允许我放置服务的内容,因为它说它的格式不正确) 服务正在正确启动: 但是,所有测试均失败,并出现相同错误: 的问题源于/dev/shm太小,有时会使浏览器崩溃(https://stackoverflow.com/a/50642913/5364231, https://bugs.c
我有以下代码 它返回错误: 如果我使用运行,我不会收到任何错误。不幸的是,我真的不能在无头状态下运行我想运行的东西。有人有什么想法吗?
使用Selenium的Python脚本无法创建Chrome的实例,尽管版本是正确的并且安装了UI。 我已经在这里看了类似的线程,似乎没有一个解决了这个问题。代码在Windows上工作 - 一旦我尝试在Linux上执行它,它就不再有效。我的预期目标是让它在视觉上打开Chrome,因此我不是在寻找涉及虚拟显示器的解决方案。 我有谷歌浏览器75.0.3770.100安装我也有ChromeDriver 7