Javascript 夜视(PageObject)和#x2B;TypeScript无法使用@symbol定位元素

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

执行期间,无法使用元素中的@符号链接定位器

错误:无法使用xpath定位元素:“@queryInput”

代码:

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关键字进行更改很困难。但我会更新结果的,它成功了。谢谢你的支持。你能帮我回答以下问题吗