小编Ale*_*kin的帖子

TestCafe从元素获取文本

我正在尝试从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在这种情况下会受到限制,对吧?

javascript automated-tests web-testing e2e-testing testcafe

4
推荐指数
1
解决办法
1760
查看次数

如何使用节流连接运行 TestCafe 测试?

如果文件上传时间超过 1 分钟,我需要检查功能。

为了通过手动测试来检查它,我使用 Chrome 开发工具来设置节流“慢 3G”。但我不知道如何使用 TestCafe 做到这一点。

testing automated-tests web-testing e2e-testing testcafe

4
推荐指数
1
解决办法
1221
查看次数

TestCafe 中有没有办法验证 Chrome 网络调用?

我有一个测试用例,我需要导航到一个网页并在 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

4
推荐指数
1
解决办法
751
查看次数

如何从TestCafe中的window对象获取构造函数?

在我的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)

javascript automated-tests web-testing e2e-testing testcafe

4
推荐指数
1
解决办法
81
查看次数

TestCafe - 浏览器在测试之间总是以干净的状态启动。如何覆盖它以便浏览器记住缓存、用户设置和存储

测试之间的浏览器始终以干净的状态打开。登录在我的应用程序中被记住,因为身份验证仍然存在,但由于浏览器始终以干净的状态打开,我必须在所有夹具的 Before 挂钩中执行登录。有什么方法可以打开浏览器以便记住用户设置、缓存、本地和会话存储吗?

browser automated-tests web-testing e2e-testing testcafe

4
推荐指数
1
解决办法
1935
查看次数

夹具或测试的隔离模式

是否可以在隔离模式下运行某些测试,而在不使用该模式的情况下运行其他测试?例如,我们有一些轻量级测试,我们不需要进行3次尝试,但对于其他测试则可能是必要的

testing automated-tests web-testing e2e-testing testcafe

4
推荐指数
1
解决办法
91
查看次数

TestCafe:测试页面 在新标签页中打开 PDF

我正在测试的 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 做任何事情?

pdf testing automation e2e-testing testcafe

4
推荐指数
1
解决办法
1751
查看次数

TestCafe 是否有设置默认浏览器窗口大小的方法?

阅读CLI Docs,似乎没有办法设置默认浏览器窗口大小。有没有办法做到这一点,以便每个测试或每个测试夹具不必?

我应该指出,resizeWindow在每个测试中添加一个调用,甚至每个测试夹具一次都不是跨多个夹具的可扩展解决方案,因此“正确”的解决方案应该/将涉及某种配置,因此只需要设置一次。

browser testing automation e2e-testing testcafe

4
推荐指数
1
解决办法
2451
查看次数

有没有办法捕获 js 错误但不会因此而导致 testcafe 测试失败?

我目前正在开始编写一些 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 错误,以便我可以记录它们并从中获取票证,但我不希望它们在测试运行中失败。

javascript testing error-handling automated-tests testcafe

4
推荐指数
1
解决办法
4315
查看次数

如何使用 TestCafe 和 Yaml 将屏幕截图和视频保存为 Azure Build Pipeline 中的附件?

我正在尝试在 Azure Devops 中创建一个构建管道

  1. 运行在 TestCafe Studio 中创建的测试
  2. 保存错误屏幕截图,并保存每次测试的视频
  3. 保存测试运行的视频
  4. 将测试结果发布到测试运行
  5. 将屏幕截图和视频作为附件发布到构建管道和生成的测试运行中的其余结果

对于我的一生,我和我的团队都无法弄清楚如何做到这一点 - 我们目前处于保存测试运行,并将视频和屏幕截图保存为工件的状态,但它们都没有附加到测试结果中构建或测试运行 - 这是我们的 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)

azure azure-devops azure-pipelines testcafe

4
推荐指数
1
解决办法
2590
查看次数