Javascript 夜视(PageObject)和#x2B;TypeScript无法使用@symbol定位元素
执行期间,无法使用元素中的@符号链接定位器 错误:无法使用xpath定位元素:“@queryInput” 代码:Javascript 夜视(PageObject)和#x2B;TypeScript无法使用@symbol定位元素,javascript,typescript,automated-tests,nightwatch.js,pageobjects,Javascript,Typescript,Automated Tests,Nightwatch.js,Pageobjects,执行期间,无法使用元素中的@符号链接定位器 错误:无法使用xpath定位元素:“@queryInput” 代码: import * as config from 'config'; import { NightWatchClient, PageObject } from 'nightwatch'; const pageConfig = config.get<IPageConfig>('pages.google'); const page: PageObject = { url
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;
import*作为配置从'config'导入;
从“nightwatch”导入{NightWatchClient,PageObject};
const pageConfig=config.get('pages.google');
常量页面:页面对象={
url:pageConfig.url,
要素:{
查询输入:{
选择器:'//输入[@name=“q”],
locateStrategy:'xpath'
}
},
命令:[
{
enterQuery:(客户端:NightWatchClient,查询:字符串)=>{
返回客户端
.waitForElementVisible('//input[@name=“q”]',5000)
//.setValue('//input[@name=“q”]',[query,client.Keys.ENTER])
.setValue('@queryInput',[query,client.Keys.ENTER])
.waitForElementVisible('/*[@id=“res”]',5000);
},
},
]
};
导出=页面;
完整的
您不需要传入nightwatch客户端。您可以使用
this
或this.api
在页面对象类中使用它。尝试将此
转储到页面对象中的控制台,您将看到所有可用的属性。这适用于JS,因此在TS中也应该如此
通过将函数更改为以下内容,可以使选择器正常工作:
enterQuery: (query: string) => {
return this
.waitForElementVisible('//input[@name="q"]', 5000)
.setValue('@queryInput', [query, client.Keys.ENTER])
.waitForElementVisible('//*[@id="res"]', 5000);
}
谢谢你的快速回复。因为我对typescript和nightwatch都不熟悉,所以发现使用this或this.api关键字进行更改很困难。但我会更新结果的,它成功了。谢谢你的支持。你能帮我回答以下问题吗