我正在尝试从Chrome上的模式获取文本。使用控制台,我可以获取内部文本,如下所示:
document.querySelector('.my-form > a').innerText
// returns http://a-url.com
Run Code Online (Sandbox Code Playgroud)
现在,在测试中,我可以使用
const myText = Selector('.my-form > a').innerText;
await t
.expect(myText).contains('url');
Run Code Online (Sandbox Code Playgroud)
我什至可以点击该网址
await t.click(myText);
Run Code Online (Sandbox Code Playgroud)
但是例如,我不能将内部文本放入变量中。我尝试从这篇文章中使用ClientFunction
const getUrl = ClientFunction(() => document.querySelector('.my-form > a').innerText);
test('My Test', async t => {
const text = await getUrl();
console.log(text);
});
// this results in
// TypeError: Cannot read property 'innerText' of null
Run Code Online (Sandbox Code Playgroud)
并尝试使用普通选择器,如本文所建议
const text = Selector('.my-form > a').innerText;
const inner = await text.textContent;
console.log(inner);
// prints: undefined
Run Code Online (Sandbox Code Playgroud)
如何从元素中提取文本?我了解t.selectText在这种情况下会受到限制,对吧?
如果文件上传时间超过 1 分钟,我需要检查功能。
为了通过手动测试来检查它,我使用 Chrome 开发工具来设置节流“慢 3G”。但我不知道如何使用 TestCafe 做到这一点。
我有一个测试用例,我需要导航到一个网页并在 chrome 浏览器中验证该页面的网络调用。理想情况下,我会将它们放入一个变量中,并针对某些与分析相关的调用过滤它们并验证它们的值。
这可以通过 Selenium 中的 chrome 功能来完成。请参阅此处的文档:http : //chromedriver.chromium.org/logging/performance-log 但我正在尝试通过 testCafe 执行此操作?
我 在 testCafe 网站上遇到了这个文档:https : //devexpress.github.io/testcafe/documentation/test-api/intercepting-http-requests/ 但我不确定这是否与在 chrome 中获取性能日志相同. 基本上,如果我能够在 chrome 中的开发人员工具下的网络选项卡中获取所有调用,我应该能够使用 JavaScript 对其进行过滤并完成我的测试。
任何与此相关的输入都会有所帮助。谢谢
javascript automated-tests google-chrome e2e-testing testcafe
在我的testcafe测试中,我需要获取我正在使用的库的构造函数,以便对其调用静态方法。
但是,我无法使用给定的ClientFunction和Eval方法来执行此操作。我该如何获取构造函数?
我尝试了以下方法:
// Does not work, because the docs say it only allows using ClientFunction for obtaining "serializable" values
let getSortable = new ClientFunction(() => window.Sortable);
test('test', async t => {
let Sortable = await getSortable();
console.log(Sortable); // Logs undefined
});
Run Code Online (Sandbox Code Playgroud)
test('test', async t => {
let Sortable = await t.eval(() => window.Sortable);
console.log(Sortable); // Logs undefined (not sure why)
});
Run Code Online (Sandbox Code Playgroud) 测试之间的浏览器始终以干净的状态打开。登录在我的应用程序中被记住,因为身份验证仍然存在,但由于浏览器始终以干净的状态打开,我必须在所有夹具的 Before 挂钩中执行登录。有什么方法可以打开浏览器以便记住用户设置、缓存、本地和会话存储吗?
是否可以在隔离模式下运行某些测试,而在不使用该模式的情况下运行其他测试?例如,我们有一些轻量级测试,我们不需要进行3次尝试,但对于其他测试则可能是必要的
我正在测试的 Web 应用程序的一部分是单击一个按钮,这通常会在新选项卡中打开一个 PDF。这使用户能够在应用程序中继续前进。PDF 可以忽略。
目前,我的策略是单击按钮,然后使用 ClientFunction 导航回去。TestCafe在点击按钮时成功打开PDF,但是在同一个选项卡中打开,然后测试卡住了。向后导航会更改 URL,但仍会显示 PDF。
const goBack = ClientFunction(() => window.history.back())
await this.t.click(this.button)
await this.t.wait(10000)
await goBack()
Run Code Online (Sandbox Code Playgroud)
TestCafe 目前是否能够绕过这个问题,因为我实际上不需要对 PDF 做任何事情?
阅读CLI Docs,似乎没有办法设置默认浏览器窗口大小。有没有办法做到这一点,以便每个测试或每个测试夹具不必?
我应该指出,resizeWindow在每个测试中添加一个调用,甚至每个测试夹具一次都不是跨多个夹具的可扩展解决方案,因此“正确”的解决方案应该/将涉及某种配置,因此只需要设置一次。
我目前正在开始编写一些 TestCafe 测试,并在运行它们时在我们的网站中遇到了一个问题 - 控制台中的 JS 错误导致测试失败。当然,我很高兴我的测试发现了这个问题,但这意味着即使发生低优先级且不直接影响用户的 JS 错误,我们的测试也可能会失败并阻止构建。
现在,这可能是一些人想要的工作流程,但对我们来说,我们宁愿提出问题并在并行工作流程中解决它,而不是因为 JS 错误而阻止所有人。我知道这个--skip-js-errors选项,但是这完全消除了所有错误。是否有中间立场,例如将错误转换为警告,或者只是添加某种测试后功能来记录测试运行期间发生的任何 JS 错误?我尝试将一个添加afterEach到我的装置中,如下所示:
.afterEach(async t => {
const { error } = await t.getBrowserConsoleMessages();
console.log(JSON.stringify(error));
});
Run Code Online (Sandbox Code Playgroud)
但--skip-js-errors这样做没有任何作用。我希望得到一些关于此的指示!
我的目标,以防不清楚 - 我想在我的 TestCafe 运行中看到可能的 JS 错误,以便我可以记录它们并从中获取票证,但我不希望它们在测试运行中失败。
我正在尝试在 Azure Devops 中创建一个构建管道
对于我的一生,我和我的团队都无法弄清楚如何做到这一点 - 我们目前处于保存测试运行,并将视频和屏幕截图保存为工件的状态,但它们都没有附加到测试结果中构建或测试运行 - 这是我们的 YAML 文件之一的示例
# ASP.NET
# Build and test ASP.NET projects.
# Add steps that publish symbols, save build artifacts, deploy, and more:
# https://learn.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4
trigger:
- master
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
platform: '$(buildPlatform)'
configuration: …Run Code Online (Sandbox Code Playgroud) testcafe ×10
e2e-testing ×8
testing ×5
web-testing ×5
javascript ×4
automation ×2
browser ×2
azure ×1
azure-devops ×1
pdf ×1