如何使Nightwatch在页面对象文件中默认使用xpath

问题描述 投票:4回答:4

我所有的页面对象看起来都像这样:

  elements: {
      header: {
         locateStrategy: 'xpath',
         selector: "//h3[text()='Welcome']"
      },
      loginButton: {
         locateStrategy: 'xpath',
         selector: "//button[text()='Login']"
      },
      forgotPasswordLink: {
         locateStrategy: 'xpath',
         selector: "//a[text()='Forgot Password?']"
      },
      signupButton: {
         locateStrategy: 'xpath',
         selector: "//button[text()='Signup']"
      }

如果我能说“到处使用xpath会更好—都会崩溃”]

The docs说您应该可以在“测试设置”中设置"use_xpath" : true,但是我已经在nightwatch.json中可以看到的所有位置都进行了尝试,但这没有任何效果。

(尚不清楚,是否表示此设置将影响页面对象文件中的声明,无论如何:该示例仅显示它会影响测试用例中的后续assert调用。

[我所有的页面对象看起来都像这样:元素:{标头:{locateStrategy:'xpath',选择器:“ // h3 [text()='Welcome']”},loginButton:{...

xpath pageobjects nightwatch.js
4个回答
3
投票

您可以仅使用像这样的javascript函数(取决于您喜欢的创建对象的方式):

var xSelector = function (selector) {
    return {
        selector: selector,
        locateStrategy: 'xpath'
    }
};

0
投票

要解决此问题,您可以遍历元素并为每个元素设置任何给定的定位策略,如下所示:


0
投票

也许会帮助某人。


0
投票
尝试设置:“ use_xpath”:true
© www.soinside.com 2019 - 2024. All rights reserved.