Nightwatch(PageObject)+ TypeScript无法使用@符号定位元素

时间:2018-04-24 05:50:07

标签: javascript typescript automated-tests nightwatch.js pageobjects

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

  

错误:无法找到元素:" @ 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

Link

1 个答案:

答案 0 :(得分:0)

您无需传递nightwatch客户端。您已使用thisthis.api在页面对象类中使用它。尝试将this转储到页面对象中的控制台,您将看到可用的所有属性。这适用于JS,所以它应该在TS中以相同的方式工作。

您可以通过将功能更改为以下内容来使您的选择器工作:

enterQuery: (query: string) => {
    return this
      .waitForElementVisible('//input[@name="q"]', 5000)
      .setValue('@queryInput', [query, client.Keys.ENTER])
      .waitForElementVisible('//*[@id="res"]', 5000);
  }