Joe*_*aly 17 selenium-chromedriver selenium-webdriver docker docker-for-windows
我想做什么?
尝试具有以下的docker映像。是的,我知道还有其他方法可以在此处完成最终游戏,但是对此我有特定要求。
当前状态-在常规Windows 10或Windows 2016中运行测试时,它运行良好。当测试在Windows docker容器中运行时,测试失败,“ 会话由于页面崩溃而被删除 ”。请注意,我专注于chrome测试,但使用FireFox也会得到相似的结果。
我打开了硒铬的详细调试程序,并捕获了日志文件。我有两个日志文件。“ goodrun_log.txt”来自Windows 10成功测试。“ docker_log.txt”是容器内运行失败的日志。
关于第473行,我们可以看到Docker运行失败。到那时为止,日志文件与正常运行完全相同。然后繁荣。那么,我们缺少什么使Docker容器在此时失败?
发表于硒在https://github.com/SeleniumHQ/selenium/issues/7165 发布到ASP.NET泊坞窗回购在https://github.com/Microsoft/aspnet-docker/issues/181
option.AddArgument("--disable-dev-shm-usage"); // https://github.com/elgalu/docker-selenium/issues/20#issuecomment-407101358
Run Code Online (Sandbox Code Playgroud)
docker run -d --name aspnet48testsrun --shm-size="1g" -p 5000:80 aspnet48testsd
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
[1556732925.450] [DEBUG]:DevTools WebSocket事件:DOM.documentUpdated 7FCEC12C5F4ADEA352BBA3DF3AF6075D { } [1556732925.450] [DEBUG]:DevTools WebSocket命令:DOM.getDocument(id = 15)7FCEC12C5F4ADEA352BBA3DF3AF6075D { } [1556732925.451] [DEBUG]:DevTools WebSocket响应:Runtime.evaluate(id = 14)7FCEC12C5F4ADEA352BBA3DF3AF6075D { “结果”:{ “ type”:“ string”, “ value”:“ http:// localhost /” } } [1556732925.531] [DEBUG]:DevTools WebSocket事件:Inspector.targetCrashed 7FCEC12C5F4ADEA352BBA3DF3AF6075D { } [1556732925.532] [INFO]:正在等待挂起的导航... [1556732925.532] [DEBUG]:DevTools WebSocket命令:Runtime.evaluate(id = 16)7FCEC12C5F4ADEA352BBA3DF3AF6075D { “表达式”:“ 1” } [1556732925.532] [INFO]:等待等待的导航完成。状态:未知错误:无法确定加载状态 从标签页崩溃 [1556732925.552] [INFO]:[464b2b630c39434969f9b90e11b7aa37]响应导航错误未知错误:由于页面崩溃,会话已删除 来自未知错误:无法确定加载状态 从标签页崩溃 (会议信息:无头铬= 74.0.3729.108) [1556732925.552] [DEBUG]:日志类型“驱动程序”在销毁时丢失了0个条目 [1556732925.552] [DEBUG]:日志类型“浏览器”在销毁时丢失了0个条目
[1556733552.098] [DEBUG]:DevTools WebSocket事件:DOM.documentUpdated 193B5CE9ACD5F7CE56919120C68276A7 { } [1556733552.098] [DEBUG]:DevTools WebSocket命令:DOM.getDocument(id = 15)193B5CE9ACD5F7CE56919120C68276A7 { } [1556733552.104] [DEBUG]:DevTools WebSocket响应:Runtime.evaluate(id = 14)193B5CE9ACD5F7CE56919120C68276A7 { “结果”:{ “ type”:“ string”, “ value”:“ http:// localhost:29657 /” } } [1556733552.104] [DEBUG]:DevTools WebSocket响应:DOM.getDocument(id = 15)193B5CE9ACD5F7CE56919120C68276A7 { “根”: { “ backendNodeId”:6 “ baseURL”:“ http:// localhost:29657 /”, “ childNodeCount”:1, “儿童”:[{ “属性”:[], “ backendNodeId”:7 “ childNodeCount”:2 ...更多...
PS C:\ seleniumtests> .. \ SeleniumDockerTest.exe http:// localhost [chrome选项:] = [---- headless --no-sandbox --disable-gpu] 在端口49160上启动ChromeDriver 74.0.3729.6(255758eccf3d244491b8a1317aa76e1ce10d57e9-refs / branch-heads / 3729 @ {#29}) 仅允许本地连接。 请保护ChromeDriver和相关测试框架使用的端口,以防止恶意代码访问。 [0501 / 120039.381:ERROR:network_change_notifier_win.cc(156)] WSALookupServiceBegin失败,原因为:0 [0501 / 120039.428:ERROR:audio_device_listener_win.cc(46)] RegisterEndpointNotificationCallback失败:80070424 在ws://127.0.0.1:49163 / devtools / browser / f33a8cd9-6411-46f5-a9ab-d69901cd53c1上监听的DevTools [0501 / 120039.772:ERROR:network_change_notifier_win.cc(156)] WSALookupServiceBegin失败,原因为:0 [捕获的异常] = [OpenQA.Selenium.WebDriverException:未知错误:由于页面崩溃而删除了会话 来自未知错误:无法确定加载状态 从标签页崩溃 (会议信息:无头铬= 74.0.3729.108) (驱动程序信息:chromedriver = 74.0.3729.6(255758eccf3d244491b8a1317aa76e1ce10d57e9-refs / branch-heads / 3729 @ {#29}),platform = Windows NT 10.0.17763 x86_64) 在OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) 在OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute,Dictionary`2 parameters) 在OpenQA.Selenium.Remote.RemoteWebDriver.set_Url(字符串值) 在OpenQA.Selenium.Remote.RemoteNavigator.GoToUrl(字符串url) 在C:\ dev \ docker-selenium-aspnet45.git \ SeleniumDockerTest \ Program.cs:line 60中的SeleniumDockerTest.Program.DoChromeTests()
在https://cloud.docker.com/repository/docker/jhealy62/devfish上有一个带有Windows,IIS,Chrome,FF和一些测试的Docker映像。
将其拉回仓库并配置
将Powershell放入容器
在Docker容器内,查看Web服务器的工作情况
看到seleniumtest失败:
和我一起哭!
解决了WebDriver超时错误-在Docker容器内发生FireFox或Chrome测试时发生。FIX(需要下面的两个项目):
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
Run Code Online (Sandbox Code Playgroud)
option.AddArguments( "--headless","--disable-gpu", "--no-sandbox" );
Run Code Online (Sandbox Code Playgroud)
以防万一我将我的解决方案留在这里,也许对某人来说,这会有帮助)
因此,我们的想法是在单独的容器中运行“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
Run Code Online (Sandbox Code Playgroud)
然后在代码中连接到现有的 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);
Run Code Online (Sandbox Code Playgroud)
现在您可以使用此 chrome 实例上传您的网站进行测试。
归档时间: |
|
查看次数: |
773 次 |
最近记录: |