首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Selenium-Chromedriver测试执行将使scoped_dir*临时文件在内部网站上执行以返回500个错误。

Selenium-Chromedriver测试执行将使scoped_dir*临时文件在内部网站上执行以返回500个错误。
EN

Stack Overflow用户
提问于 2019-01-11 17:54:16
回答 1查看 3.6K关注 0票数 0

我们有Selenium#自动化测试,运行一个内部web应用程序,它需要一个Quus-2Beer令牌。当我运行测试时,会创建一组名为scope_dir的临时文件。对于某些测试,这些文件会被自动删除。但是在测试执行过程中的某一段时间,它们只是保持不变,而没有被删除。在此之后,我收到了500个错误响应。

我尝试了以下几点:

测试完成后在temp文件夹中的dir

https://bugs.chromium.org/p/chromedriver/issues/detail?id=644

https://sqa.stackexchange.com/questions/26675/chromedriver-not-deleting-scoped-dir-in-temp-folder-after-test-is-complete

无法读取HKLM\SOFTWARE\Policies\Google\Chrome\MachineLevelUserCloudPolicyEnrollmentToken:系统找不到指定的文件。(0x2)

https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/303

我钻到那个scope_dir文件夹中,发现了以下错误:

0111/171553.822:INFO:控制台(21) "BSSO遥测:>>{“结果”:“NoExtension”,“NoExtension”,"type":"ChromeSsoTelemetry","data":{},“跟踪”:“已初始化的BrowserSSO”,“创建ChromeBrowserCore提供程序”,“为方法CreateProviderAsync发送消息”,“接收到的方法消息”CreateProviderAsync,“错误: ChromeBrowserCore错误NoExtension:扩展名未安装”。资料来源:lg-ochofcwm0-pkfjghldq2.js (21) 0111/171553.878:INFO:控制台(21) "BSSO遥测:{“NoExtension”:“NoExtension”,“NoExtension”,"type":"ChromeSsoTelemetry","data":{},"traces":"BrowserSSO Initialized",“ChromeBrowserCore”,"Sending“,"Received”," error : ChromeBrowserCore error NoExtension: Extension“,}。资料来源:lg-ochofcwm0-pkfjghldq2.js (21) 0111/171553.897:INFO:控制台(21) "BSSO遥测:{“NoExtension”:“NoExtension”,“NoExtension”,"type":"ChromeSsoTelemetry","data":{},"traces":"BrowserSSO Initialized",“ChromeBrowserCore”,"Sending“,"Received”," error : ChromeBrowserCore error NoExtension: Extension“,}。0111/171605.329:INFO:控制台(92679)“找不到HammerJS。某些角材料部件可能不能正常工作。“,源:https://myWebsite.europe.cloudapp.azure.com/vendor.js (92679) 0111/171605.409:INFO:控制台(636)”令牌: null",源:

上述链接中的解决方案之一是在每次测试执行之前,在运行测试套件之前删除scope_dir文件夹。但是,问题是我们并行运行四个测试线程。因此,删除scope_dir文件夹会踩在正在运行的chromedriver.exe进程上,从而导致问题。

使用以下方法并行运行测试:

谷歌Chrome 71.0.3578.98版

ChromeDriver版本2.45.6

通过Specflow进行测试。最初,我们的网站是在Azure应用服务中托管的,测试执行也很顺利。但是,在过去的几周里,它被托管在Service中。在此之后,我们经历了这个问题(但是,不确定这是否是问题所在)。

EN

Stack Overflow用户

发布于 2019-01-13 10:17:10

你看得对。每次启动Chrome时,当您运行基于Selenium/ChromeDriver的测试时,都会创建一个scoped_dir*,从下面的日志可以看出这一点:

代码语言:javascript
运行
复制
[1547372435.413][INFO]: Launching chrome: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-extensions --disable-extensions-except="C:\Users\ATECHM~1\AppData\Local\Temp\scoped_dir4616_4705\internal" --disable-hang-monitor --disable-infobars --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-web-resources --enable-automation --enable-logging --force-fieldtrials=SiteIsolationExtensions/Control --ignore-certificate-errors --log-level=0 --metrics-recording-only --no-first-run --password-store=basic --remote-debugging-port=0 --start-maximized --test-type=webdriver --use-mock-keychain --user-data-dir="C:\Users\ATECHM~1\AppData\Local\Temp\scoped_dir4616_1359" data:,

scoped_dir*需要传递默认/强制/配置参数才能启动Chrome。例如:

代码语言:javascript
运行
复制
"chrome": {
      "chromedriverVersion": "2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387)",
      "userDataDir": "C:\\Users\\ATECHM~1\\AppData\\Local\\Temp\\scoped_dir4616_1359"
   }

但是,在最后成功调用driver.quit() (即在clean 上)时,该临时文件夹应该被ChromeDriver删除。

根据测试退出后的文件夹的说法,这个问题在ChromeDriver v2.28浏览器:Chrome57.x中是可以复制的,@johnchen@chromium.org曾提到过:

这似乎是ChromeDriver和Chrome之间的竞争条件。ChromeDriver创建这些临时目录供Chrome使用,最后ChromeDriver尝试删除这些目录。ChromeDriver在执行删除之前等待主Chrome进程终止,但是一些Chrome子进程可能仍在运行并保留这些目录,从而导致删除失败。目前,ChromeDriver不重试删除。添加一些重试可能是最简单的修复方法。

此提交Chromedriver在需要时重试删除temp dir在清理这些目录时添加了重试逻辑,以免ChromeDriver在退出时无法删除临时目录,从而浪费了磁盘空间。这个补丁是ChromeDriver 2.3的一部分。

如果您仍然看到scoped_dir* (在并行测试的情况下),您可以从返回功能存储userDataDir并删除该文件夹。这将清除该特定实例的scoped_dir文件夹,并在运行并行测试时提供帮助。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54151695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档