小编Huc*_*nan的帖子

操纵Select的人具有相同选择器的元素列表

背景:

使用NodeJS / CucumberJS / Puppeteer构建emberJS解决方案的端到端回归测试。

问题:

当多个动态元素具有相同的选择器时,选择(page.click)并获取元素之一的textContent?(就我而言,我有4个具有相同选择器的元素= [data-test-foo4 =“ true”])

我知道,

const text = await page.evaluate( () => document.querySelector('[data-test-foo4="true"]').textContent );
Run Code Online (Sandbox Code Playgroud)

我可以获取第一个元素的文本,但是如何使用相同的选择器选择其他元素?我试过了:

var text = await page.evaluate( () => document.querySelectorAll('[data-test-foo4="true"]').textContent )[1];
console.log('text = ' + text);
Run Code Online (Sandbox Code Playgroud)

但这给了我'文字=未定义'

另外,以下内容:

await page.click('[data-test-foo4="true"]');
Run Code Online (Sandbox Code Playgroud)

使用该选择器选择第一个元素,但是如何使用该选择器选择下一个?

javascript node.js google-chrome-devtools puppeteer

6
推荐指数
2
解决办法
1万
查看次数

在 VS Code-debugger 中,如何将 launch.json 中的 envFile 用于 nodejs?

我正在尝试在我的 nodejs 应用程序上的 VS Code 中运行调试器。我正在使用 .env 文件来存储我稍后使用 process.env 调用的环境变量。不幸的是,当我运行调试器时,这并没有加载文件。

启动.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "RegressionTestSuite",
            "autoAttachChildProcesses": true,
            "program": "node ${workspaceFolder}/node_modules/.bin/cucumber-js",
            "args": [
            ],
            "envFile": "${workspaceFolder}/.env"
        },
    ]
}
Run Code Online (Sandbox Code Playgroud)

.env:

export SCREEN_SIZE_WIDTH='1366';
export SCREEN_SIZE_HEIGHT='768';
Run Code Online (Sandbox Code Playgroud)

当我运行 VS Code 调试器时,我的 .env 文件中没有环境变量。我应该如何调用 launch.json 中的 .env 文件?


我应该在我让它工作之后添加更多信息:

我最终使我的 .env 文件成为环境变量列表

.env 文件示例:

# Standard supported size is width='1366, height=768
SCREEN_SIZE_WIDTH='1366'
SCREEN_SIZE_HEIGHT='768'
EPAY_GUI_AUTOMATION_TEST_DEBUG_MODE='yadda_yadda_yadda'
Run Code Online (Sandbox Code Playgroud)

在我的 nodejs 世界构造函数中,我包括

world.js 示例:

enter code here`enter code here`require('dotenv').config();
process.env.EPAY_GUI_AUTOMATION_TEST_DEBUG_MODE
Run Code Online (Sandbox Code Playgroud)

在我使用的 hook.js …

debugging node.js visual-studio-code vscode-debugger dotenv

5
推荐指数
2
解决办法
8076
查看次数

如何验证 cucumberjs / puppeteer 中不存在选择器?

我正在尝试验证 cucumberjs / puppeteer 中不存在选择器。如何使用 cucumber-assert 来使用 throws 断言?

我正在研究自动化测试来支持测试 ember 前端应用程序。我正在使用 cucumberjs、puppeteerjs 和 cucumber-assert。

我之前使用过以下内容:

if (await page.waitForSelector('[data-test-text-title-refunded-widget-console="true"]')) {
            let textContentOfElement = await page.evaluate(() => document.body.querySelector('[data-test-text-title-refunded-widget-console="true"]').textContent);
            return assert.equal(textContentOfElement, widgetTitle, `title with text ${  widgetTitle  } is not present`);
        }
Run Code Online (Sandbox Code Playgroud)

当我验证元素存在并且文本正确时,它起作用。对于我当前的断言,我使用了 cucumber-assert npm 包中的以下 throws 断言:

assert.throws(someFunctionThatThrows).then(callback);
Run Code Online (Sandbox Code Playgroud)

我不确定如何处理回调函数 - 到目前为止我有以下内容。

const assert = require('cucumber-assert');

return assert.throws(await page.waitForSelector('[data-test-text-title- import-payment-file-widget-console="true"]'))
                .then(function(err) {

            });
Run Code Online (Sandbox Code Playgroud)

我应该在回调中返回失败吗?

* 更新 * 我相信我找到了一种不同的方法来解决我的问题。这是将来其他人遇到同样问题的情况。

    if (await page.$('[data-test-text-title-import-payment-file-widget-console="true"]', { timeout: settings._30000 }) === null) {
        return Promise.resolve();
    }
    return …
Run Code Online (Sandbox Code Playgroud)

javascript assert cucumberjs puppeteer

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

使用 Puppeteer,如何从 <h1> 标签中获取文本?

我正在使用 CucumberJS 和 Puppeteer。我很难从<h1>标签中提取文本。

ember .hbs 代码是:

<div class="grid__cell" data-test-foobar4="true">
    <h1 class="ao-headline u-font--light" data-test-foobar3="true">{{pageTitle}}</h1>
</div>
Run Code Online (Sandbox Code Playgroud)

data-因为 EmberJS 使用动态 id,所以我为我的选择器使用了 HTML标签。

// Read page table title
async verifyTestTileForList() {
    const textContent = await this.page.evaluate(() => document.body.querySelector('[data-test-foobar3="true"]').textContent);
    console.log('Page title = ' + textContent);
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到:

错误:评估失败:类型错误:无法读取 null 的属性“textContent”

这对我来说没有意义。我查看了 HTML,我看到:

<h1 data-test-foobar3="true" class="ao-headline u-font--light">Imports</h1>
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

javascript node.js google-chrome-devtools puppeteer

2
推荐指数
1
解决办法
7162
查看次数