当前位置: 首页 > 知识库问答 >
问题:

windows docker容器内的硒在ff/chrome"会话因页面崩溃而被删除"时失败

东方和志
2023-03-14

我到底想做什么?

尝试有一个码头工人的形象,做以下。是的,我知道有其他方法来完成这里的最终游戏,但我有一个具体的要求。

  • 运行一个ASP。NET MVC 4.5网络应用程序

当前状态-在常规Windows 10或Windows 2016中运行测试时,测试运行正常。当测试在Windows docker容器中运行时,会显示“由于页面崩溃而删除会话”。请注意,我关注的是chrome测试,但我们在使用FireFox时也得到了类似的结果。

我打开了selenium chrome的详细调试,并捕获了日志文件。我有两个日志文件。“goodrun_log.txt”来自Windows 10的成功测试。“docker_log.txt”是容器内失败运行的日志。

关于473行,我们可以看到docker运行失败。到那时为止,日志文件与良好运行完全相同。然后砰的一声。那么,我们遗漏了什么使docker容器在那一点上失败呢?

发布至Selenium网站https://github.com/SeleniumHQ/selenium/issues/7165发布到ASP。净docker回购协议https://github.com/Microsoft/aspnet-docker/issues/181

  • Docker issue(linux)于2015年8月11日发布-/dev/shm size-https://github.com/elgalu/docker-selenium/issues/20作者:kkochubey1
  • chrome标志(比这多得多,但是…)
option.AddArgument("--disable-dev-shm-usage"); // https://github.com/elgalu/docker-selenium/issues/20#issuecomment-407101358
  • 像这样重试https://github.com/electron/electron/issues/9369#issuecomment-312234465
  • SHM模式。命令运行,但未解决问题
docker run -d --name aspnet48testsrun --shm-size="1g" -p 5000:80 aspnet48testsd
  • 记忆
docker run -d --name aspnet48testsrun -m inf --memory-swap inf -p 5000:80 aspnet48tests
docker run -d --name aspnet48testsrun -m 2g -p 5000:80 aspnet48tests
[1556732925.450][DEBUG]: DevTools WebSocket Event: DOM.documentUpdated 7FCEC12C5F4ADEA352BBA3DF3AF6075D {

}
[1556732925.450][DEBUG]: DevTools WebSocket Command: DOM.getDocument (id=15) 7FCEC12C5F4ADEA352BBA3DF3AF6075D {

}
[1556732925.451][DEBUG]: DevTools WebSocket Response: Runtime.evaluate (id=14) 7FCEC12C5F4ADEA352BBA3DF3AF6075D {
   "result": {
      "type": "string",
      "value": "http://localhost/"
   }
}
[1556732925.531][DEBUG]: DevTools WebSocket Event: Inspector.targetCrashed 7FCEC12C5F4ADEA352BBA3DF3AF6075D {

}
[1556732925.532][INFO]: Waiting for pending navigations...
[1556732925.532][DEBUG]: DevTools WebSocket Command: Runtime.evaluate (id=16) 7FCEC12C5F4ADEA352BBA3DF3AF6075D {
   "expression": "1"
}
[1556732925.532][INFO]: Done waiting for pending navigations. Status: unknown error: cannot determine loading status
from tab crashed
[1556732925.552][INFO]: [464b2b630c39434969f9b90e11b7aa37] RESPONSE Navigate ERROR unknown error: session deleted because of page crash
from unknown error: cannot determine loading status
from tab crashed
  (Session info: headless chrome=74.0.3729.108)
[1556732925.552][DEBUG]: Log type 'driver' lost 0 entries on destruction
[1556732925.552][DEBUG]: Log type 'browser' lost 0 entries on destruction
[1556733552.098][DEBUG]: DevTools WebSocket Event: DOM.documentUpdated 193B5CE9ACD5F7CE56919120C68276A7 {

}
[1556733552.098][DEBUG]: DevTools WebSocket Command: DOM.getDocument (id=15) 193B5CE9ACD5F7CE56919120C68276A7 {

}
[1556733552.104][DEBUG]: DevTools WebSocket Response: Runtime.evaluate (id=14) 193B5CE9ACD5F7CE56919120C68276A7 {
   "result": {
      "type": "string",
      "value": "http://localhost:29657/"
   }
}
[1556733552.104][DEBUG]: DevTools WebSocket Response: DOM.getDocument (id=15) 193B5CE9ACD5F7CE56919120C68276A7 {
   "root": {
      "backendNodeId": 6,
      "baseURL": "http://localhost:29657/",
      "childNodeCount": 1,
      "children": [ {
         "attributes": [  ],
         "backendNodeId": 7,
         "childNodeCount": 2,
... lots more ...
PS C:\seleniumtests> .\SeleniumDockerTest.exe http://localhost
[chrome options:] =[--headless --no-sandbox --disable-gpu]
Starting ChromeDriver 74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}) on port 49160
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
[0501/120039.381:ERROR:network_change_notifier_win.cc(156)] WSALookupServiceBegin failed with: 0
[0501/120039.428:ERROR:audio_device_listener_win.cc(46)] RegisterEndpointNotificationCallback failed: 80070424

DevTools listening on ws://127.0.0.1:49163/devtools/browser/f33a8cd9-6411-46f5-a9ab-d69901cd53c1
[0501/120039.772:ERROR:network_change_notifier_win.cc(156)] WSALookupServiceBegin failed with: 0
[exception caught] =[OpenQA.Selenium.WebDriverException: unknown error: session deleted because of page crash
from unknown error: cannot determine loading status
from tab crashed
  (Session info: headless chrome=74.0.3729.108)
  (Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Windows NT 10.0.17763 x86_64)
   at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.html" target="_blank">set_Url(String value)
   at OpenQA.Selenium.Remote.RemoteNavigator.GoToUrl(String url)
   at SeleniumDockerTest.Program.DoChromeTests() in C:\dev\docker-selenium-aspnet45.git\SeleniumDockerTest\Program.cs:line 60]

有一个docker映像,包含Windows、IIS、Chrome、FF和https://cloud.docker.com/repository/docker/jhealy62/devfish的一些测试。

把它从回购中拉下来并准备好

  • docker拉jhealy62/devfish
  • docker run-d--name aspnettest-p 5000:80 jhealy62/devfish

装进容器里

  • docker exec-它是最强大的powershell

在docker容器内部,可以看到Web服务器正在工作

  • 卷曲http://localhost-使用BasicParsing

请参见seleniumtest失败:

  • cd\
  • cd\seleniumtests
  • 。\硒中毒测试。exehttp://localhost

跟我一起哭吧!

  • 发布问题-Aspnet docker github-https://github.com/Microsoft/aspnet-docker/issues/181

WebDriver超时错误已解决-在Docker容器中的FireFox或Chrome测试中发生。

  • 将websocket安装到docker容器中。摘自dockerfile:
RUN powershell -Command Add-WindowsFeature Web-WebSockets
  • 将一组非常有趣的选项传递给chromedriver
option.AddArguments( "--headless","--disable-gpu", "--no-sandbox" );

共有1个答案

袁亦
2023-03-14

以防万一,我会把我的解决方案留在这里,也许对某人来说,这会很有帮助。)

因此,我们的想法是在一个单独的容器中运行“selenium/standalone chrome”映像。

首先设置您的docker-compose.yml文件,类似这样:

version: '3.8'
services:
 chrome:
    image: <your_storage>/standalone-chrome
    restart: always
    ports: 
      - 4444:4444
    networks:
     front:
        ipv4_address: 172.16.238.5
 net-worker:
    build: <your_storage>/<your_project>
    depends_on: 
      - chrome
    networks:
     front:
        ipv4_address: 172.16.238.10 

  networks:
   front:
    driver: bridge
    ipam:
        config:
         - subnet: 172.16.238.0/24

然后在代码中连接到exist chrome实例

var options = new ChromeOptions();
options.AddArguments("--headless");
options.AddArgument("no-sandbox");
_chrome = new RemoteWebDriver(new Uri("http://172.16.238.5:4444/wd/hub"), options);

现在,您可以使用这个chrome实例上传您的网站进行测试。

 类似资料:
  • 注意:我的问题被关闭之前,我尝试了这里提到的解决方案-未知错误:会话删除,因为页面崩溃从未知错误:无法确定加载状态从标签崩溃与ChromeDriver硒-添加这些选项-options.add参数("--disable-dev-shm-用法");options.add参数("--no-沙盒"); -- 我仍然看到的问题 在selenium网格中运行时,在某些情况下,单个测试会出现以下错误: 方法1:

  • 我从GitHub下载了这个游荡的硒网格设置,并按原样试用了它。我可以让我的量角器测试在默认的Firefox实例上运行,但是当我尝试在chrome实例上测试时,我遇到了错误。这是当我尝试使用chrome运行测试时,节点vm的node.log文件的日志输出。 我尝试过使用openjdk 6 我目前正在使用量角器0.23.1。这是我的量角器配置文件: 我也尝试将下面的标志添加到conf/upstart/

  • 每当UwAmp重启自己(例如,当我修改php.ini或切换到不同版本的php),它经常崩溃Chrome我打开的任何页面,无论是我正在UwAmp测试的页面还是完全不相关的东西比如Facebook它们是空的,我必须重新加载它们。有时它完全关闭Chrome,我必须重新启动它,我收到消息说Chrome意外关闭。什么给?这是已知的错误吗?有什么办法可以预防吗?UwAmp是如何控制Chrome的?这是在Win

  • 问题内容: 我正在使用使用Python和Selenium的InstaPy。我每个Cron都会启动脚本,并且有时会崩溃。所以它确实是不规则的,有时运行得很好。我也已经在GitHub Repo上发布了消息,但是在那儿没有得到答案,所以我现在在这里问是否有人知道为什么。 这是一台数字海洋ubuntu服务器,我在无头模式下使用它。驱动程序版本在日志中可见。这是错误消息: 知道原因可能是什么以及如何解决?

  • 问题内容: 我有一个存储时间线的领域模型(我正在制作视频编辑应用程序),并且经常访问它的RMArray属性时会迷恋它。该应用程序已经发货,我本人还没有体验过,但是我的美眉经常将崩溃通知我。这是崩溃日志: 这是RLMProject代码: 有人知道我的代码有什么问题吗? 问题答案: 当本身失效时,将无法检查或,这就是为什么您的堆栈跟踪显示未捕获的异常被抛出的原因。 这意味着在调用之前,该对象已从领域中