- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 Spectron 来测试我的 Electron 应用程序。文档说当试图找到第 n 个 child 时,您可以使用第 n 个 child 选择器,或者使用 $$
获取匹配选择器的所有 child ,然后使用索引运算符即 $$ ("foo ")[0]
获取第一个 foo。 DOCS
有了这些知识,我希望输出以下代码:BAR
我无法让它工作,我尝试以下操作:
const foo = ".foo";
const fooElements = app.client.$$ (foo);
console.log ("FOOELEMENTS", await TP (app.client.getHTML (foo)));
console.log ("BAR", fooElements[0].getText (".bar"));
并得到如下输出:
console.log components\pages\analysis\__test__\Analysis.spectron.ts:44
FOOELEMENTS [ '<div class="foo"><div class="bar">BAR</div><div class="baz">BAZ</div></div>',
'<div class="foo"><div class="bar">BAR2</div><div class="baz">BAZ2</div></div>',
'<div class="foo"><div class="bar">BAR3</div><div class="baz">BAZ3</div></div>'
'<div class="foo"><div class="bar">BAR4</div><div class="baz">BAZ4</div></div>' ]
console.log components\pages\analysis\__test__\Analysis.spectron.ts:50
EXCEPTION TypeError: Cannot read property 'getText' of undefined
at components\pages\analysis\__test__\Analysis.spectron.ts:45:44
at Generator.next (<anonymous>)
at fulfilled (components\pages\analysis\__test__\Analysis.spectron.ts:4:58)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)
如您所见,输出 HTML 确实有几个 .foo
div,但是当我尝试访问第一个时,它说 fooElements[0]
是 未定义
旁注(应该不相关):TP
是我编写的一个名为 toPromise
的函数的别名,它让我等待 webdriver promises,因为 TypeScript 被它们的实现方式:
export async function toPromise<T> (client: Webdriver.Client<T>)
{
return client as any as Promise<T>;
}
// Promise
interface Client<T> {
finally(callback: (...args: any[]) => void): Client<T>;
then<P>(
onFulfilled?: (value: T) => P | Client<P>,
onRejected?: (error: any) => P | Client<P>
): Client<P>;
catch<P>(
onRejected?: (error: any) => P | Client<P>
): Client<P>;
inspect(): {
state: "fulfilled" | "rejected" | "pending";
value?: T;
reason?: any;
};
}
知道我做错了什么吗?或者建议的替代方案?如果可能,我宁愿避免使用第 n 个子选择器。
编辑:更改为类
最佳答案
实际上 webdriver 窗口索引和元素指的是 [1] 是第一个元素。
这对我来说效果很好。
var button = ('//*[contains(@class,"popper")]')[1];
return this.app.client.click(button);
示例:
class Clix {
constructor() {
this.clix_search = '(//input[contains(@class,"clix-search")])[1]';
}
clix_input_search(app) {
return help.setValue(app, this.clix_search, "pack");
}
}
在助手类中
setValue(app, element, text) {
return app.client.waitForVisible(element, 60000)
.waitForEnabled(element, 60000)
.clearElement(element)
.setValue(element, text)
.getValue(element)
.should.eventually.equal(text)
}
关于javascript - Spectron/WebdriverIO 第 n 个子节点使用 $$[n] 而不是选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47664527/
在执行期间,spectron 打开两个空白的终端窗口。第一个窗口是我想要的应用程序,其他窗口看起来像终端,里面没有任何东西。 目前我使用 focus() 聚焦到第一个窗口。 Github 问题链接:h
我尝试使用以下命令安装Spectron: npm install --save-dev spectron 但我收到此错误消息: npm ERR! Windows_NT 6.1.7601 npm ER
我只使用基本的 Spectron 测试文件(在 Typescript 中)打开我的应用程序,获取窗口计数,然后大概退出。然而,Spectron 的 app.stop()似乎只是关闭了开发工具窗口并让主
我正在使用 Spectron 测试 Electron 应用。我在文档示例中找到了有关如何获取窗口数量的信息,这非常简单。但是我正在寻找的是如何在单击另一个元素后检查一个元素的状态。在这里,我试图检查应
我正在使用 React 开发一个 Electron 桌面应用程序。尝试为代码的电子端设置测试。 我有一个 Launch.test.js 文件,我正在尝试用 Jest 测试 Spectron。 当我运行
我正在开发一个 Electron 应用程序。主进程打开第一个渲染器 (browserWindow)。当用户单击按钮时,此渲染器会向主进程发送一条 IPC 消息。收到此消息后,主进程将打开第二个不同的渲
我可以使用 Spectron 启动 Electron 应用程序,但无法对其执行任何操作。 操作系统:Windows 8.1 节点版本:10.16.0 Spectron:3.8.0 var Applic
我正在尝试在测试方面测试 Electron 的 Spectron,但在学习教程时,每当我运行 npm run test:e2e 时,我都会收到此错误消息。我的测试文件语法正确,但我不确定为什么我在编译
我想在我的存储库(https://github.com/DWboutin/jest-spectron-ts)中创建测试,但似乎都可以,但是我无法在测试中访问Application.client API
我正在尝试使用 Spectron 测试 Electron 应用程序。但我无法测试客户端窗口 javascript 全局变量。这是我的简化代码。请帮我。谢谢。 index.html
我正在使用 Spectron 测试基于 React 的 Electron 应用程序。我想选择一个 React 组件,我正在尝试为此访问 WebDriverIO 的浏览器并调用 react$,但是找不到
最近我发现使用 Electron 为我们的应用程序规划自动化测试有些困难。我尝试使用 Spectron,它看起来像是测试 Electron 应用程序的官方框架,但是,我发现他们网站上的文档很难理解。
我正在为用Electron编写的应用程序编写E2E测试。我需要测试一个有效调用shell.openExternal('link')的按钮,其中link是外部网站。我一直在Webdriver文档中寻找允
我有一个 Electron 应用程序,它首先启动一个启动器窗口(在渲染器进程中),它启动多个后台服务。在这些后台服务成功启动后,它会发送 "services-running"在其ipcRenderer
我正在使用 Spectron、mocha 和 chai-as-promised 进行测试。我的 IDE 是 Visual Studio Code。 我从测试中启动应用程序,如下所示: this.app
我正在尝试使用 Spectron 框架为 Electron 中实现的应用程序编写一些测试。当我的应用程序正确启动后,我想发送一个它已准备就绪的事件。我做了类似的事情 在应用程序中:我尝试这两个 ele
Electron v1.8.2 Spectron v3.8.0 添加光谱测试,但即使是非常基本的测试也会失败。 尝试运行: const { Application } = require('spect
我正在使用spectron针对我的 Electron 应用程序运行集成测试。除了尝试测试应用程序设置在应用程序重新启动之间是否正确保留之外,一切都工作正常。 运行测试时,我的应用程序会为每个测试启动新
我正在尝试使用 Spectron 为我们的 Electron 应用程序编写测试,但我遇到了设置问题。我使用 chai 的经典设置。我有一个包含设置代码的文件: const path = require
我们如何断言嵌入在 HTML 中的 javascript 变量在使用 electron 构建的应用程序中具有一些预期值?目前测试框架有spectron、mocha、chai、chai.should()
我是一名优秀的程序员,十分优秀!