在执行期间,无法使用元素中的 @ 符号链接定位器。
错误:无法找到元素:" @ queryInput"使用:xpath
代码:
import * as config from 'config';
import { NightWatchClient, PageObject } from 'nightwatch';
const pageConfig = config.get<IPageConfig>('pages.google');
const page: PageObject = {
url: pageConfig.url,
elements: {
queryInput: {
selector: '//input[@name="q"]',
locateStrategy: 'xpath'
}
},
commands: [
{
enterQuery: (client: NightWatchClient, query: string) => {
return client
.waitForElementVisible('//input[@name="q"]', 5000)
//.setValue('//input[@name="q"]', [query, client.Keys.ENTER])
.setValue('@queryInput', [query, client.Keys.ENTER])
.waitForElementVisible('//*[@id="res"]', 5000);
},
},
]
};
export = page;
完成code
答案 0 :(得分:0)
您无需传递nightwatch客户端。您已使用this
或this.api
在页面对象类中使用它。尝试将this
转储到页面对象中的控制台,您将看到可用的所有属性。这适用于JS,所以它应该在TS中以相同的方式工作。
您可以通过将功能更改为以下内容来使您的选择器工作:
enterQuery: (query: string) => {
return this
.waitForElementVisible('//input[@name="q"]', 5000)
.setValue('@queryInput', [query, client.Keys.ENTER])
.waitForElementVisible('//*[@id="res"]', 5000);
}