- 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/
1、介绍 今天给大家推荐一款基于Node.js编写且号称下一代浏览器和移动自动化测试框架:WebdriverIO 简单来讲:WebdriverIO 是一个开源的自动化测试框架,它允许测试人员使用
我想使用 WebdriverIO 的日志功能从 chrome 获取浏览器日志 (console.logs),但我得到的只是函数日志不是函数。 var WebdriverIO = require('we
我使用的是 ubuntu 14.04。这是我的代码: var webdriverio = require('webdriverio'); var options = { desiredCapa
为了测试,我有这样的目录结构: 定制 库 测试 页面 在“custom”目录中编写的每个 JavaScript 函数都可以通过“浏览器”对象通过“test”目录进行访问。 这是通过 lib 目录中的“
我正在使用 WebdriverIO 构建一个 e2e 测试套件,但我一直致力于在页面对象之间创建继承。 在 Protractor 中,我们可以通过参数传递上下文,然后只搜索该上下文中的元素。例如, v
我正在尝试在我的应用程序中测试一个场景,其中我需要关闭浏览器和 session 并启动一个新的浏览器和 session 来测试当我传递一组将调用的启动参数时,之前输入的数据是否成功调用数据。尽管我在关
我正在尝试查找一个元素 let selector = "[class='count-stats']"; console.log(browser.element(selector)); 出现错误 { t
我正在从事 webdriverio 自动化项目。我有以下代码。 waitUntilVisible(element, maxTimeOut) { console.log("**********
我正在尝试使用 WebdriverIO 截取整个页面的屏幕截图。 我读过最好的方法是使用 WebdriverCSS增强我的 WebdriverIO 流。 WebdriverCSS自动截图整个页面??
我想覆盖 webdriverio 中的点击命令 在每次点击之前,我都会检查定位器是否存在。我想要这样的东西: browser.addCommand("click", function () {
我的应用程序中有一个类似于此的下拉列表 - Volvo Saab Mercedes Audi 我如何将汽车品牌选项收集到一个数组中?我知道 java selenium 绑定(bin
示例 HTML: asadka_TEST Peter Parker Clark Kent aldkfsd_TEST 类中的 Javascript 代码 class
所以我有一个 250 行的表,我只想从一列中获取所有值并检查它们是否满足要求的条件: const rows = browser.elements(selector..); const number
我正在使用 CucumberJS 为我当前的项目编写测试。该测试将使用 Selenium Server + WebDriverIO 进行测试。现在我坚持测试,我必须选择一个图像文件上传到服务器。我正在
Webdriverio 元素需要是字符串类型吗? 我的代码如下: describe('Test Contact Us form WebdriverUni', function() { it.onl
我对自动化测试非常陌生,目前我完全被以下问题所困扰: 我打开了一个网页(第一个窗口)在同一测试中,我调用 .newWindow(second window) 并在该窗口中执行一些操作。最后一个 Act
http://webdriver.io/guide/getstarted/modes.html 尝试使用 Chromedriver 调试 webdriverio 测试时,我绝对会发疯。您根本无法单步执
我最初的研究让我找到了 jQuery 选择器,它可以让我在 Chrome 检查器中返回正确的元素,但 Webdriver 不能或无法识别该选择器,即使 jQuery 可以识别。 这个片段就是我的选择元
我正在尝试使用 webdriverIO 单击网页中的链接。我可以导航到 google.com 页面,然后输入搜索词。 但是当我尝试单击包含所需文本的链接时,它不会单击该链接。 我做错了什么: 这是我的
我有一个测试,其中包含我想要在多个文件中重复使用的步骤。 我想我可以创建一个名为 common.js 的文件,列出其中的所有函数,然后在需要时调用。 这是推荐的方法吗? 我觉得唯一的问题是常用方法的文
我是一名优秀的程序员,十分优秀!