Electron 应用在测试执行服务器上不完全可见

如何解决Electron 应用在测试执行服务器上不完全可见

我在成功执行我的黄瓜场景时遇到了一些问题,因为出于某种未知原因,我们正在测试的电子应用程序没有完全显示(表格右侧缺少 1 列)。 出于某种原因,这仅发生在我们的 Windows 测试执行服务器上,而不发生在我的本地笔记本电脑上。 服务器分辨率为 1920x1080。 测试通过 Azure DevOps Server 管道启动。

我们通过spectron 使用cucumber-js 框架在打字稿中测试电子应用程序。

import * as path from 'path';

import { Application } from 'spectron';

import * as settings from './globalvars';

export const SUT = new Application({
  path: `${settings.sutExecutablePath}`,args: [path.join(__dirname,'../'),'--headless','--window-size=1920,1080'],env: {
    RUNNING_IN_SPECTRON: true,XXXXXX_DEV_TOOLS: false,SPECTRON_AUTOMATION_VARS: settings.testDataIndex
  },chromeDriverArgs: ['--headless',1080','resolution=1920x1080','resolution: 1920x1080','--width=1920','--height=1080'],chromeDriverLogPath: path.join(settings.reportPath,'chromedriver.log'),waitTimeout: settings.spectronDefaultImplicitWaitTimeout
});

我一直在搞乱:

  • 改变窗口大小
  • 开始最大化
  • 添加参数和 webdriverOptions 以及 chromeDriverArgs
  • ....

似乎没有任何更改对应用程序的启动方式产生任何影响,事实上,更改窗口大小或最大化启动它甚至对我的笔记本电脑也没有任何影响。

这是 chromedriver 日志的片段。不得不编辑它,但仍然有用。

[1623923272.920][INFO]: Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
[1623923272.989][INFO]: [c56aabc7011e3a87307e2b8d55b9f003] COMMAND InitSession {
   "capabilities": {
      "alwaysMatch": {
         "goog:chromeOptions": {
            "args": [ "spectron-path=c:\\xxxx\\xxxx\\win-unpacked\\xxxxxx.exe","spectron-arg0=C:\\git\\xxxxx\\02-sxxxx\\","spectron-env-RUNNING_IN_SPECTRON=true","spectron-env-xxxxx_DEV_TOOLS=false","spectron-env-SPECTRON_AUTOMATION_VARS=C:\\git\\xxxx.xxxxxx\\automation-vars.json","--window-size=800,600" ],"binary": "C:\\git\\xxxx\\02-xxxxxx\\node_modules\\spectron\\lib\\launcher.bat","windowTypes": [ "app","webview" ]
         }
      },"firstMatch": [ {

      } ]
   },"desiredCapabilities": {
      "goog:chromeOptions": {
         "args": [ "spectron-path=c:\\xxxxx\\xxxxxxx\\win-unpacked\\xxxxxx.exe","spectron-arg0=C:\\git\\xxxxxx\\02-xxxxxxx\\","spectron-env-xxxxxxxx_DEV_TOOLS=false","spectron-env-SPECTRON_AUTOMATION_VARS=C:\\git\\xxxxxx\\automation-vars.json","binary": "C:\\git\\xxxxx\\02-xxxxxxxxxxxmodules\\spectron\\lib\\launcher.bat","webview" ]
      }
   }
}

[1623923272.994][INFO]: Launching chrome: "C:\git\xxxxxxxx\02-xxxxxxx\node_modules\spectron\lib\launcher.bat" --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --enable-automation --enable-blink-features=ShadowDOMV0 --enable-logging --log-level=0 --no-first-run --no-service-autorun --password-store=basic --remote-debugging-port=0 --spectron-arg0="C:\git\xxxxxxxxx\02-xxxxxxx\\" --spectron-env-running_in_spectron=true --spectron-env-xxxxx_dev_tools=false --spectron-env-spectron_automation_vars="C:\git\xxxxxxxx\automation-vars.json" --spectron-path="c:\bxxxxxxx\xxxxxxxxxx\win-unpacked\xxxxxxx.exe" --test-type=webdriver --use-mock-keychain --user-data-dir="C:\Users\xxxxx\AppData\Local\Temp\scoped_dir33580_700219467" --window-size=800,600 data:,[1623923273.323][DEBUG]: DevTools HTTP Request: http://localhost:54323/json/version
[1623923273.637][DEBUG]: DevTools HTTP Response: {

   "browser": "Chrome/87.0.4280.141","Protocol-Version": "1.3","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) xxxxxxxx/1.0.0-alpha.2022 Chrome/87.0.4280.141 Electron/11.2.2 Safari/537.36","V8-Version": "8.7.220.31","WebKit-Version": "537.36 (@5236eb7c7e51a459c497e4ab474bf474ad7000ef)","webSocketDebuggerUrl": "ws://localhost:54323/devtools/browser/62881ab4-ea89-4b48-b75e-4234f709931b"

}


[1623923273.637][DEBUG]: DevTools HTTP Request: http://localhost:54323/json/list
[1623923273.639][DEBUG]: DevTools HTTP Response: [ {

   "description": "","devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:54323/devtools/page/30283E47D490358108E12219527675CE","id": "30283E47D490358108E12219527675CE","title": "index.html","type": "page","url": "file:///C:/xxxxxxxxx/xxxxxxxxx/win-unpacked/resources/app.asar/build/index.html","webSocketDebuggerUrl": "ws://localhost:54323/devtools/page/30283E47D490358108E12219527675CE"

} ]
"test:inProgress": "node ./node_modules/cucumber/bin/cucumber-js feature-files/*.feature --format summary --format progress-bar --format node_modules/cucumber-pretty --logLevel=error --require step-deFinitions/**/*.ts --require-module ts-node/register --require support/*.ts --format json:../reports/02-xxxx/cucumber-report.json --format node_modules/cucumber-junit-formatter:../reports/02-xxxx/testresults.junit --format-options '{\"scenarioAsstep\":true}' --tags \"@inProgress\"",
    "devDependencies": {
    "@cucumber/cucumber": "^7.0.0","@types/chai": "^4.2.14","@types/cucumber": "^6.0.1","@types/jsonpath": "^0.2.0","@types/xml2js": "^0.4.8","@typescript-eslint/eslint-plugin": "^4.4.0","@typescript-eslint/parser": "^4.4.0","chai": "^4.2.0","cucumber": "^6.0.5","cucumber-html-reporter": "^5.3.0","cucumber-junit-formatter": "^0.2.2","cucumber-pretty": "^6.0.0","date-fns": "^2.21.3","electron": "^10.0.0","eslint": "^7.11.0","eslint-config-prettier": "^7.1.0","eslint-plugin-import": "^2.22.1","eslint-plugin-prettier": "^3.3.1","filecompare": "^1.0.4","jsonpath": "^1.1.0","prettier": "2.2.0","spectron": "^13.0.0","ts-node": "^9.1.1","typescript": "^4.1.3","xml2js": "^0.4.23"
  },```

解决方法

对于将来可能会遇到此问题的任何人。 解决我的问题的方法非常基本。只需要手动设置客户端应用程序的边界。

SUT.browserWindow.setSize(1920,1080);
SUT.browserWindow.setPosition(0,0);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?