How to make Nightwatch use xpath by default in page object files

Viewed 3411

All my page objects look something like this:

  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']"
      }

It would be way better if I could just say "use xpath everywhere" - that would all collapse mightily

The docs say that you should be able to set "use_xpath" : true in your "test settings", but I have tried that in all the places I can see in nightwatch.json, and it doesn't have any effect.

(It's not completely clear if they mean that this setting will affect declarations in page object files, in any case: the example only shows it affecting subequent assert calls in the test case).

4 Answers

Try to set:

"use_xpath": true

in nightwatch.conf.js file, not nightwatch.json

Worked for me :)

Perhaps it'll help someone.

Try to set:

"use_xpath": true

in your nightwatch.json

Related