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

问题描述 投票:0回答:1

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

错误:无法使用: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;

完成code

Link

javascript typescript automated-tests nightwatch.js pageobjects
1个回答
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);
  }
© www.soinside.com 2019 - 2024. All rights reserved.