- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何从 MongoDB 获取值到实时运行的 TestCafe 测试中,以便它在测试期间输入该值?我有一个充满数据的 MongoDB 集合,我希望 TestCafe 在实时测试期间使用这些数据。我希望在 TestCafe 文件中使用 .toArray() 但我什至无法获得它似乎的 MongoDB 连接。我还没有在网上找到解决方案。
我已经尝试按照以下步骤操作:
import { Selector } from 'testcafe';
const MongoClient = require('mongodb').MongoClient
import fs from 'fs';
import { ClientFunction } from 'testcafe';
const assert = require('assert');
// Connection URL
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'my_database_name';
// keyword begins as an empty string and is supposed to be populated from DB
var keyword = [];
// Use connect method to connect to the server
MongoClient.connect(url, function(err, client) {
assert.equal(null, err);
console.log("Connected successfully to server");
const db = client.db(dbName);
const findDocuments = function(db, callback) {
// Get the documents collection
const collection = db.collection('my_collection_name');
// Find some documents
collection.find({'a': 3}).toArray(function(err, docs) {
assert.equal(err, null);
console.log("Found the following records");
console.log(docs);
callback(docs);
keyword.unshift(docs);
});
};
client.close();
});
keyword = keyword[0]
fixture `example`
.page `https://www.google.com/`;
test('mongodb keyword to google search', async t => {
await t
.wait(1000)
.maximizeWindow()
.wait(1000)
.typeText(Selector('input[name="q"]'), keyword) //docs['keyword']
.wait(1000)
.presKey('enter')
.wait(5000);
});
因此,我尝试展示一个简单的谷歌搜索,尝试将我的 MongoDB 集合中的关键字插入谷歌搜索框并按下搜索按钮。这应该很简单:
相反,我收到此错误:
(node:1900) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use|
Running tests in:
- Chrome 74.0.3729 / Windows 10.0.0
example
× MongoDB keyword to google search
1) The "text" argument is expected to be a non-empty string, but it was undefined.
Browser: Chrome 74.0.3729 / Windows 10.0.0
64 |test('mongodb keyword to google search', async t => {
65 | await t
66 | .wait(1000)
67 | .maximizeWindow()
68 | .wait(1000)
> 69 | .typeText(Selector('input[name="q"]'), keyword) //docs['keyword']
70 | .wait(1000)
71 | .presKey('enter')
72 | .wait(5000);
73 |
74 |});
at typeText (C:\Users\Eric\Google Drive\!GIF
PROJECT\JavaScript\NodeJS\TestCafe\stackoverflow_example.js:69:7)
at test (C:\Users\TestCafe\PROJECT\JavaScript\NodeJS\TestCafe\stackoverflow_example.js:64:1)
at markeredfn (C:\Users\User\AppData\Roaming\npm\node_modules\testcafe\src\api\wrap-test-function.js:17:28)
at <anonymous> (C:\Users\User\AppData\Roaming\npm\node_modules\testcafe\src\api\wrap-test-function.js:7:5)
at fn (C:\Users\User\AppData\Roaming\npm\node_modules\testcafe\src\test-run\index.js:240:19)
at TestRun._executeTestFn
(C:\Users\User\AppData\Roaming\npm\node_modules\testcafe\src\test-run\index.js:236:38)
at _executeTestFn (C:\Users\User\AppData\Roaming\npm\node_modules\testcafe\src\test-run\index.js:289:24)
如果有解决办法请告诉我。我只想将数据库数据(从 MongoDB)传递到 TestCafe,以便在测试期间使用它(如果我想从数据库加载 URL,也需要知道它)。
1/1 失败(2 秒)
最佳答案
MongoClient.connect
是一个带有回调函数的异步 API。在您访问测试中的 keyword
值时,无法保证其完成。您可以将此函数包装在 Promise 中,并在测试中使用 await
关键字从数据库中检索结果:
// Connection URL
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'my_database_name';
function findDocs (db) {
return new Promise((resolve, reject) => {
const collection = db.collection('my_collection_name');
// Find some documents
collection.find({'a': 3}).toArray(function(err, docs) {
if (err)
return reject(err);
console.log("Found the following records");
console.log(docs);
resolve(docs);
});
});
}
function getClient () {
return new Promise((resolve, reject) => {
// Use connect method to connect to the server
MongoClient.connect(url, function(err, client) {
if (err)
return reject(err);
console.log("Connected successfully to server");
resolve(client);
});
});
}
async function getKeywords () {
const client = await getClient();
const db = client.db(dbName);
try {
return await getDocs(db);
}
finally {
client.close();
}
}
fixture `example`
.page `https://www.google.com/`;
test('mongodb keyword to google search', async t => {
const keyword = await getKeywords();
await t
.wait(1000)
.maximizeWindow()
.wait(1000)
.typeText(Selector('input[name="q"]'), keyword) //docs['keyword']
.wait(1000)
.presKey('enter')
.wait(5000);
});
关于mongodb - 有没有办法将 MongoDB 与 TestCafe 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56016619/
在 Page 类中测试了 React 应用程序的登录功能: async login(t) { console.log('starting login...'); debugger;
我正在尝试使用 getStyleProperty('border') 使用 testcafe 测试图像上的边框,它总是返回未定义。 box-shadow 等其他属性工作正常。 HTML: const
我试图在使用 testCafe 登录后重定向到另一个页面,但在登录后其他页面保持空白,也就是说,它永远不会加载,或者在其他时候它只是关闭 session 而不进入。事实是它不会让我在登录后进入主页。我
我正在使用 https://hub.docker.com/r/testcafe/testcafe/ 运行我们的 Testcafe 项目,它工作正常,除了失败时无法创建屏幕截图目录,原因是: Error
我使用 TestCafé 的“testcafe-browser.provider-browserstack”插件。我尝试在我的应用程序中使用它,但我总是收到一条消息,提示登录错误。数据是正确的(只是“
我使用 TestCafé 的“testcafe-browser.provider-browserstack”插件。我尝试在我的应用程序中使用它,但我总是收到一条消息,提示登录错误。数据是正确的(只是“
浏览器:全部 测试咖啡馆:v0.23.0 node.js: v8.12.0 操作系统:macOS、Windows 10 自更新(0.21.0 -> 0.23.2)以来,测试的执行时间增加了两倍。自更新
我使用的是 TestCafe 1.1.0 版和 Testcafe-react-selector 3.1.0 版。我的目标是从节点返回文本。 HTML 树如下所示: board W
他们两个是否以某种方式融合在一起?两者关系扑朔迷离,且同名。249.99 美元的工具能否用于运行使用开源 API 编写的测试? 最佳答案 TestCafe 最初是作为付费的独立工具出现的。除了测试运行
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 4 年前。 Improve
在 Vagrant VM 中运行 testcafe,它大部分时间都在工作。 但是,Chrome 在这种启用了硬件加速的环境中无法正常启动,所以我必须使用命令行标志 --disable-gpu 来启动它
我正在学习testcafe,我是这里的新手。 根据testcafe文档命令 npx testcafe 'chrome --start-fullscreen'应该打开全屏并运行测试,这是完美的工作。但是
我现在使用 TestCafe 有一段时间了,从来没有遇到过问题。几天前 TestCafe 开始运行我的测试两次,产生了很多问题。我在 https://github.com/DevExpress/tes
我正在尝试从 Chrome 上的模式中获取文本。使用控制台,我可以得到如下内部文本: document.querySelector('.my-form > a').innerText // retur
我正在使用 TestCafe 0.23.3。我正在尝试验证一个元素是启用还是禁用。这是禁用时元素的 HTML 节点: Add Person 这是启用时元素的 HTML 节点: Add Person 这
我正在尝试开始使用 Testcafe。 我已经使用 npm 在全局范围内安装了它,并且我正在关注 https://devexpress.github.io/testcafe/documentation
我需要使用 Testcafe 从 POST 调用中检索信息。 我需要手动做的是: 在 Chrome 中打开开发人员工具, 捕获流量并按特定请求名称过滤, 转到标题 -> 请求有效负载 在请求有效负载中
如何在运行测试时显示分步信息?当前运行命令 testcafe chrome .\test\customer.js 一般来说,需要查看有关执行内容的更多信息。 最佳答案 目前,TestCafe 中不存在
所以,我正在尝试创建一个自定义函数,它允许我检查一个字段是否包含数字或文本,但为了进一步测试,我将需要检查更复杂的东西,比如某个表的总和是否等于某事等我找不到自定义函数的示例,例如: function
我正在尝试在 testcafe 上选择一个动态下拉值。 值“select2-result-label-7”保持与最后一个数字相同。我怎样才能选择正确的下拉菜单?我尝试了模式匹配,但没有成功。 可以帮我
我是一名优秀的程序员,十分优秀!