Description of the bug/issue
When I use xpath selectors string in section commands, for example, this.click('//div')
, and I have set use_xpath: true
in nightwatch config, I expect the section command to resolve the selector as nested under the section selector normally using corresponding locateStrategy
. Instead it defaults to 'css selector' as locateStrategy
for xpath selector string and throws error.
Error while running .locateMultipleElementsByElementId() protocol action: invalid selector: An invalid or illegal selector was specified
.
Steps to reproduce
- Set
use_xpath: true
in nightwatch config.
- Use the provided page object
pages/ecosia.js
.
- Run the provided sample test.
- See error.
Page Object
pages/ecosia.js
module.exports = {
elements: {
navMenu: '//*[@data-test-id="main-nav-toggle"]',
heading: '//*[@data-test-id="layout-content"]//*[contains(@class,"heading")]',
},
sections: {
navDropdown: {
selector: '//*[@data-test-id="main-nav-dropdown"]',
commands: {
selectOption: function (option) {
// Uses 'css selector' locateStrategy and doesn't respect 'use_xpath: true' in config.
this.click(`//*[@data-track-id="menu" and normalize-space()="${option}"]`);
return this;
},
},
},
},
commands: {
selectOption: function (option) {
// Uses 'xpath' locateStrategy and respects 'use_xpath: true' in config.
this.click(`//*[@data-test-id="main-nav-dropdown"]//*[@data-track-id="menu" and normalize-space()="${option}"]`);
return this;
},
},
};
Sample test
tests/ecosia.js
describe("ecosia", function () {
const option = "Settings";
it("pass", function (browser) {
const ecosia = browser.page.ecosia();
browser.navigateTo("https://www.ecosia.org/");
browser.setWindowSize(1920, 1080);
ecosia.click("@navMenu");
ecosia.selectOption(option); // <- No Error in 'Page'
ecosia.expect.element("@heading").text.to.contain(option);
});
it("fail", function (browser) {
const ecosia = browser.page.ecosia();
browser.navigateTo("https://www.ecosia.org/");
browser.setWindowSize(1920, 1080);
ecosia.click("@navMenu");
ecosia.expect.section("@navDropdown").to.be.visible;
ecosia.section.navDropdown.selectOption(option); // <- Error in 'Section'
ecosia.expect.element("@heading").text.to.contain(option);
});
});
Command to run
npx nightwatch tests/ecosia.js --verbose
Verbose Output
[ecosia] Test Suite
──────────────────────────────────────
⠋ Starting ChromeDriver on port 9515...
⠙ Starting ChromeDriver on port 9515...
Request POST /session
{
capabilities: {
firstMatch: [ {} ],
alwaysMatch: { browserName: 'chrome', 'goog:chromeOptions': { w3c: true } }
}
⠼ Starting ChromeDriver on port 9515...
⠇ Starting ChromeDriver on port 9515...
Response 200 POST /session (659ms)
{
value: {
capabilities: {
acceptInsecureCerts: false,
browserName: 'chrome',
browserVersion: '108.0.5359.125',
chrome: {
chromedriverVersion: '108.0.5359.71 (1e0e3868ee06e91ad636a874420e3ca3ae3756ac-refs/branch-heads/5359@{#1016})',
userDataDir: 'C:\\Users\\tester\\AppData\\Local\\Temp\\scoped_dir6252_1393781577'
},
'goog:chromeOptions': { debuggerAddress: 'localhost:60917' },
networkConnectionEnabled: false,
pageLoadStrategy: 'normal',
platformName: 'windows',
proxy: {},
setWindowRect: true,
strictFileInteractability: false,
timeouts: { implicit: 0, pageLoad: 300000, script: 30000 },
unhandledPromptBehavior: 'dismiss and notify',
'webauthn:extension:credBlob': true,
'webauthn:extension:largeBlob': true,
'webauthn:virtualAuthenticators': true
},
sessionId: 'a34ce4d57461f14f4b5e1d4d4db98e83'
}
ℹ Connected to ChromeDriver on port 9515 (761ms).
Using: chrome (108.0.5359.125) on WINDOWS.
Received session with ID: a34ce4d57461f14f4b5e1d4d4db98e83
→ Running [before]:
→ Completed [before].
Running pass:
───────────────────────────────────────────────────────────────────────────────────────────────────
→ Running [beforeEach]:
→ Completed [beforeEach].
→ Running command: navigateTo ('https://www.ecosia.org/')
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/url
{ url: 'https://www.ecosia.org/' }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/url (2181ms)
{ value: null }
→ Completed command: navigateTo ('https://www.ecosia.org/') (2185ms)
→ Running command: setWindowSize (1920, 1080)
→ Running command: windowSize ('current', 1920, 1080, [Function])
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/window/rect
{ x: undefined, y: undefined, width: 1920, height: 1080 }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/window/rect (146ms)
{ value: { height: 1080, width: 1920, x: 10, y: 10 } }
→ Completed command: setWindowSize (1920, 1080) (157ms)
→ Completed command: windowSize ('current', 1920, 1080, [Function]) (151ms)
→ Running command: click ({name, __index, __selector, locateStrategy, pseudoSelector, parent, resolvedElement, abortOnFailure, suppressNotFoundErrors, timeout...})
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{ using: 'xpath', value: '//*[@data-test-id="main-nav-toggle"]' }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (35ms)
{
value: [
{
'element-6066-11e4-a52e-4f735466cecf': '9eb6f39d-6ddb-4a85-bffa-1d251e5a787c'
}
]
}
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/9eb6f39d-6ddb-4a85-bffa-1d251e5a787c/click
{}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/9eb6f39d-6ddb-4a85-bffa-1d251e5a787c/click (80ms)
{ value: null }
→ Completed command: click ({name, __index, __selector, locateStrategy, pseudoSelector, parent, resolvedElement, abortOnFailure, suppressNotFoundErrors, timeout...}) (126ms)
→ Running command: click ('//*[@data-test-id="main-nav-dropdown"]//*[@data-track-id="menu" and normalize-space()="Settings"]')
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{
using: 'xpath',
value: '//*[@data-test-id="main-nav-dropdown"]//*[@data-track-id="menu" and normalize-space()="Settings"]'
}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (38ms)
{
value: [
{
'element-6066-11e4-a52e-4f735466cecf': 'ec5b5c5a-1620-4169-9d91-34d538fb7bf9'
}
]
}
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/ec5b5c5a-1620-4169-9d91-34d538fb7bf9/click
{}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/ec5b5c5a-1620-4169-9d91-34d538fb7bf9/click (4109ms)
{ value: null }
→ Completed command: click ('//*[@data-test-id="main-nav-dropdown"]//*[@data-track-id="menu" and normalize-space()="Settings"]') (4150ms)
→ Running command: expect.element ({name, __index, __selector, locateStrategy, pseudoSelector, parent, resolvedElement, abortOnFailure, suppressNotFoundErrors, timeout...})
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{
using: 'xpath',
value: '//*[@data-test-id="layout-content"]//*[contains(@class,"heading")]'
}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (17ms)
{
value: [
{
'element-6066-11e4-a52e-4f735466cecf': '8925ed2a-0129-4f3c-aba2-22177ccd22c3'
}
]
}
Request GET /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/8925ed2a-0129-4f3c-aba2-22177ccd22c3/text
Response 200 GET /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/8925ed2a-0129-4f3c-aba2-22177ccd22c3/text (20ms)
{ value: 'Settings' }
√ Expected element @heading <//*[@data-test-id="layout-content"]//*[contains(@class,"heading")]> text to contain: "Settings" (41ms)
→ Completed command: expect.element ({name, __index, __selector, locateStrategy, pseudoSelector, parent, resolvedElement, abortOnFailure, suppressNotFoundErrors, timeout...}) (43ms)
→ Running [afterEach]:
→ Completed [afterEach].
✨ PASSED. 1 assertions. (6.698s)
Running fail:
───────────────────────────────────────────────────────────────────────────────────────────────────
→ Running [beforeEach]:
→ Completed [beforeEach].
→ Running command: navigateTo ('https://www.ecosia.org/')
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/url
{ url: 'https://www.ecosia.org/' }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/url (3001ms)
{ value: null }
→ Completed command: navigateTo ('https://www.ecosia.org/') (3002ms)
→ Running command: setWindowSize (1920, 1080)
→ Running command: windowSize ('current', 1920, 1080, [Function])
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/window/rect
{ x: undefined, y: undefined, width: 1920, height: 1080 }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/window/rect (136ms)
{ value: { height: 1080, width: 1920, x: 10, y: 10 } }
→ Completed command: setWindowSize (1920, 1080) (145ms)
→ Completed command: windowSize ('current', 1920, 1080, [Function]) (141ms)
→ Running command: click ({name, __index, __selector, locateStrategy, pseudoSelector, parent, resolvedElement, abortOnFailure, suppressNotFoundErrors, timeout...})
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{ using: 'xpath', value: '//*[@data-test-id="main-nav-toggle"]' }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (65ms)
{
value: [
{
'element-6066-11e4-a52e-4f735466cecf': '88d40221-78f5-4266-8e95-a3b44b82e42d'
}
]
}
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/88d40221-78f5-4266-8e95-a3b44b82e42d/click
{}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/88d40221-78f5-4266-8e95-a3b44b82e42d/click (87ms)
{ value: null }
→ Completed command: click ({name, __index, __selector, locateStrategy, pseudoSelector, parent, resolvedElement, abortOnFailure, suppressNotFoundErrors, timeout...}) (158ms)
→ Running command: expect.element ({name, __index, __selector, locateStrategy, pseudoSelector, parent, resolvedElement, abortOnFailure, suppressNotFoundErrors, timeout...})
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{ using: 'xpath', value: '//*[@data-test-id="main-nav-dropdown"]' }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (32ms)
{
value: [
{
'element-6066-11e4-a52e-4f735466cecf': '6f00903d-8c35-41a8-857a-32ee6c01d480'
}
]
}
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/execute/sync
{
script: 'return (function(){return (function(){var k=this||self;function aa(a){return"string"==typeof a}function ba(a,b){a=a.split(".");var c=k;a[0]in c||"undefined"==typeof c.execScript||c.execScript("var "+a... (44027 characters)',
args: [
{
'element-6066-11e4-a52e-4f735466cecf': '6f00903d-8c35-41a8-857a-32ee6c01d480',
ELEMENT: '6f00903d-8c35-41a8-857a-32ee6c01d480'
}
]
}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/execute/sync (22ms)
{ value: true }
√ Expected element @navDropdown <//*[@data-test-id="main-nav-dropdown"]> to be visible (59ms)
→ Completed command: expect.element ({name, __index, __selector, locateStrategy, pseudoSelector, parent, resolvedElement, abortOnFailure, suppressNotFoundErrors, timeout...}) (60ms)
→ Running command: click ({name, __index, __selector, locateStrategy, pseudoSelector, parent, resolvedElement})
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{ using: 'xpath', value: '//*[@data-test-id="main-nav-dropdown"]' }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (25ms)
{
value: [
{
'element-6066-11e4-a52e-4f735466cecf': '6f00903d-8c35-41a8-857a-32ee6c01d480'
}
]
}
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements
{
using: 'css selector',
value: '//*[@data-track-id="menu" and normalize-space()="Settings"]'
}
Response 400 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements (31ms)
{
value: {
error: 'invalid selector',
message: 'invalid selector: An invalid or illegal selector was specified\n' +
' (Session info: chrome=108.0.5359.125)',
stacktrace: ''
}
}
Error Error while running .locateMultipleElementsByElementId() protocol action: invalid selector: An invalid or illegal selector was specified
(Session info: chrome=108.0.5359.125)
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{ using: 'xpath', value: '//*[@data-test-id="main-nav-dropdown"]' }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (50ms)
{
value: [
{
'element-6066-11e4-a52e-4f735466cecf': '6f00903d-8c35-41a8-857a-32ee6c01d480'
}
]
}
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements
{
using: 'css selector',
value: '//*[@data-track-id="menu" and normalize-space()="Settings"]'
}
Response 400 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements (48ms)
{
value: {
error: 'invalid selector',
message: 'invalid selector: An invalid or illegal selector was specified\n' +
' (Session info: chrome=108.0.5359.125)',
stacktrace: ''
}
}
Error Error while running .locateMultipleElementsByElementId() protocol action: invalid selector: An invalid or illegal selector was specified
(Session info: chrome=108.0.5359.125)
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{ using: 'xpath', value: '//*[@data-test-id="main-nav-dropdown"]' }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (39ms)
{
value: [
{
'element-6066-11e4-a52e-4f735466cecf': '6f00903d-8c35-41a8-857a-32ee6c01d480'
}
]
}
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements
{
using: 'css selector',
value: '//*[@data-track-id="menu" and normalize-space()="Settings"]'
}
Response 400 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements (22ms)
{
value: {
error: 'invalid selector',
message: 'invalid selector: An invalid or illegal selector was specified\n' +
' (Session info: chrome=108.0.5359.125)',
stacktrace: ''
}
}
Error Error while running .locateMultipleElementsByElementId() protocol action: invalid selector: An invalid or illegal selector was specified
(Session info: chrome=108.0.5359.125)
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{ using: 'xpath', value: '//*[@data-test-id="main-nav-dropdown"]' }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (39ms)
{
value: [
{
'element-6066-11e4-a52e-4f735466cecf': '6f00903d-8c35-41a8-857a-32ee6c01d480'
}
]
}
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements
{
using: 'css selector',
value: '//*[@data-track-id="menu" and normalize-space()="Settings"]'
}
Response 400 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements (19ms)
{
value: {
error: 'invalid selector',
message: 'invalid selector: An invalid or illegal selector was specified\n' +
' (Session info: chrome=108.0.5359.125)',
stacktrace: ''
}
}
Error Error while running .locateMultipleElementsByElementId() protocol action: invalid selector: An invalid or illegal selector was specified
(Session info: chrome=108.0.5359.125)
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{ using: 'xpath', value: '//*[@data-test-id="main-nav-dropdown"]' }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (39ms)
{
value: [
{
'element-6066-11e4-a52e-4f735466cecf': '6f00903d-8c35-41a8-857a-32ee6c01d480'
}
]
}
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements
{
using: 'css selector',
value: '//*[@data-track-id="menu" and normalize-space()="Settings"]'
}
Response 400 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements (16ms)
{
value: {
error: 'invalid selector',
message: 'invalid selector: An invalid or illegal selector was specified\n' +
' (Session info: chrome=108.0.5359.125)',
stacktrace: ''
}
}
Error Error while running .locateMultipleElementsByElementId() protocol action: invalid selector: An invalid or illegal selector was specified
(Session info: chrome=108.0.5359.125)
[2840:11120:1223/151438.756:ERROR:device_event_log_impl.cc(215)] [15:14:38.756] USB: usb_device_handle_win.cc:1045 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)
[2840:11120:1223/151438.756:ERROR:device_event_log_impl.cc(215)] [15:14:38.756] USB: usb_device_handle_win.cc:1045 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{ using: 'xpath', value: '//*[@data-test-id="main-nav-dropdown"]' }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (11ms)
{
value: [
{
'element-6066-11e4-a52e-4f735466cecf': '6f00903d-8c35-41a8-857a-32ee6c01d480'
}
]
}
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements
{
using: 'css selector',
value: '//*[@data-track-id="menu" and normalize-space()="Settings"]'
}
Response 400 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements (13ms)
{
value: {
error: 'invalid selector',
message: 'invalid selector: An invalid or illegal selector was specified\n' +
' (Session info: chrome=108.0.5359.125)',
stacktrace: ''
}
}
Error Error while running .locateMultipleElementsByElementId() protocol action: invalid selector: An invalid or illegal selector was specified
(Session info: chrome=108.0.5359.125)
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{ using: 'xpath', value: '//*[@data-test-id="main-nav-dropdown"]' }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (9ms)
{
value: [
{
'element-6066-11e4-a52e-4f735466cecf': '6f00903d-8c35-41a8-857a-32ee6c01d480'
}
]
}
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements
{
using: 'css selector',
value: '//*[@data-track-id="menu" and normalize-space()="Settings"]'
}
Response 400 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements (12ms)
{
value: {
error: 'invalid selector',
message: 'invalid selector: An invalid or illegal selector was specified\n' +
' (Session info: chrome=108.0.5359.125)',
stacktrace: ''
}
}
Error Error while running .locateMultipleElementsByElementId() protocol action: invalid selector: An invalid or illegal selector was specified
(Session info: chrome=108.0.5359.125)
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{ using: 'xpath', value: '//*[@data-test-id="main-nav-dropdown"]' }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (10ms)
{
value: [
{
'element-6066-11e4-a52e-4f735466cecf': '6f00903d-8c35-41a8-857a-32ee6c01d480'
}
]
}
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements
{
using: 'css selector',
value: '//*[@data-track-id="menu" and normalize-space()="Settings"]'
}
Response 400 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements (13ms)
{
value: {
error: 'invalid selector',
message: 'invalid selector: An invalid or illegal selector was specified\n' +
' (Session info: chrome=108.0.5359.125)',
stacktrace: ''
}
}
Error Error while running .locateMultipleElementsByElementId() protocol action: invalid selector: An invalid or illegal selector was specified
(Session info: chrome=108.0.5359.125)
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{ using: 'xpath', value: '//*[@data-test-id="main-nav-dropdown"]' }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (10ms)
{
value: [
{
'element-6066-11e4-a52e-4f735466cecf': '6f00903d-8c35-41a8-857a-32ee6c01d480'
}
]
}
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements
{
using: 'css selector',
value: '//*[@data-track-id="menu" and normalize-space()="Settings"]'
}
Response 400 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements (13ms)
{
value: {
error: 'invalid selector',
message: 'invalid selector: An invalid or illegal selector was specified\n' +
' (Session info: chrome=108.0.5359.125)',
stacktrace: ''
}
}
Error Error while running .locateMultipleElementsByElementId() protocol action: invalid selector: An invalid or illegal selector was specified
(Session info: chrome=108.0.5359.125)
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{ using: 'xpath', value: '//*[@data-test-id="main-nav-dropdown"]' }
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (10ms)
{
value: [
{
'element-6066-11e4-a52e-4f735466cecf': '6f00903d-8c35-41a8-857a-32ee6c01d480'
}
]
}
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements
{
using: 'css selector',
value: '//*[@data-track-id="menu" and normalize-space()="Settings"]'
}
Response 400 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/element/6f00903d-8c35-41a8-857a-32ee6c01d480/elements (12ms)
{
value: {
error: 'invalid selector',
message: 'invalid selector: An invalid or illegal selector was specified\n' +
' (Session info: chrome=108.0.5359.125)',
stacktrace: ''
}
}
Error Error while running .locateMultipleElementsByElementId() protocol action: invalid selector: An invalid or illegal selector was specified
(Session info: chrome=108.0.5359.125)
NoSuchElementError
An element could not be located on the page using the given search parameters.
{"status":-1,"message":"Timed out while waiting for element \"Section [name=navDropdown],//*[@data-track-id=\"menu\" and normalize-space()=\"Settings\"]\" with \"recursion\" to be present for 5000 milliseconds.","stack":"NoSuchElementError: Timed out while waiting for element \"Section [name=navDropdown],//*[@data-track-id=\"menu\" and normalize-space()=\"Settings\"]\" with \"recursion\" to be present for 5000 milliseconds.\n at ClickElement.noSuchElementError (C:\\Users\\tester\\projects\\learn-nightwatch\\node_modules\\nightwatch\\lib\\element\\command.js:417:12)\n at ClickElement.findElement (C:\\Users\\tester\\projects\\learn-nightwatch\\node_modules\\nightwatch\\lib\\element\\command.js:221:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async PeriodicPromise.perform (C:\\Users\\tester\\projects\\learn-nightwatch\\node_modules\\nightwatch\\lib\\utils\\periodic-promise.js:81:23)"}
Try fixing by :
1. Please inspect the html before the step
2. Verify if an element with the mentioned selector is present in the DOM tree
Error location:
C:\Users\tester\projects\learn-nightwatch\pages\ecosia.js:
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
9 | commands: [{
10 | selectOption: function (option) {
11 | this.click(`//*[@data-track-id="menu" and normalize-space()="${option}"]`);
12 | return this;
13 | }
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
→ Completed command: click ({name, __index, __selector, locateStrategy, pseudoSelector, parent, resolvedElement}) (5065ms)
→ Running command: expect.element ({name, __index, __selector, locateStrategy, pseudoSelector, parent, resolvedElement, abortOnFailure, suppressNotFoundErrors, timeout...})
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{
using: 'xpath',
value: '//*[@data-test-id="layout-content"]//*[contains(@class,"heading")]'
}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (12ms)
{ value: [] }
Error
Unexpected non-string or array result value returned for contains: undefined
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{
using: 'xpath',
value: '//*[@data-test-id="layout-content"]//*[contains(@class,"heading")]'
}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (10ms)
{ value: [] }
Error
Unexpected non-string or array result value returned for contains: null
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{
using: 'xpath',
value: '//*[@data-test-id="layout-content"]//*[contains(@class,"heading")]'
}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (10ms)
{ value: [] }
Error
Unexpected non-string or array result value returned for contains: null
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{
using: 'xpath',
value: '//*[@data-test-id="layout-content"]//*[contains(@class,"heading")]'
}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (10ms)
{ value: [] }
Error
Unexpected non-string or array result value returned for contains: null
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{
using: 'xpath',
value: '//*[@data-test-id="layout-content"]//*[contains(@class,"heading")]'
}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (9ms)
{ value: [] }
Error
Unexpected non-string or array result value returned for contains: null
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{
using: 'xpath',
value: '//*[@data-test-id="layout-content"]//*[contains(@class,"heading")]'
}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (12ms)
{ value: [] }
Error
Unexpected non-string or array result value returned for contains: null
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{
using: 'xpath',
value: '//*[@data-test-id="layout-content"]//*[contains(@class,"heading")]'
}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (10ms)
{ value: [] }
Error
Unexpected non-string or array result value returned for contains: null
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{
using: 'xpath',
value: '//*[@data-test-id="layout-content"]//*[contains(@class,"heading")]'
}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (9ms)
{ value: [] }
Error
Unexpected non-string or array result value returned for contains: null
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{
using: 'xpath',
value: '//*[@data-test-id="layout-content"]//*[contains(@class,"heading")]'
}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (25ms)
{ value: [] }
Error
Unexpected non-string or array result value returned for contains: null
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{
using: 'xpath',
value: '//*[@data-test-id="layout-content"]//*[contains(@class,"heading")]'
}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (20ms)
{ value: [] }
Error
Unexpected non-string or array result value returned for contains: null
Request POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements
{
using: 'xpath',
value: '//*[@data-test-id="layout-content"]//*[contains(@class,"heading")]'
}
Response 200 POST /session/a34ce4d57461f14f4b5e1d4d4db98e83/elements (10ms)
{ value: [] }
Error
Unexpected non-string or array result value returned for contains: null
✖ NightwatchAssertError
Expected element @heading <//*[@data-test-id="layout-content"]//*[contains(@class,"heading")]> text to contain: "Settings" - element was not found - expected "contain 'Settings'" but got: "not present" (5215ms)
Error location:
C:\Users\tester\projects\learn-nightwatch\tests\ecosia.js:
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
18 | ecosia.expect.section("@navDropdown").to.be.visible;
19 | ecosia.section.navDropdown.selectOption("Settings"); // <- Error
20 | ecosia.expect.element("@heading").text.to.contain(option);
21 | });
22 | });
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
→ Completed command: expect.element ({name, __index, __selector, locateStrategy, pseudoSelector, parent, resolvedElement, abortOnFailure, suppressNotFoundErrors, timeout...}) (5217ms)
→ Running [afterEach]:
→ Completed [afterEach].
FAILED: 1 assertions failed, 2 errors and 1 passed (13.732s)
→ Running [after]:
→ Completed [after].
→ Running command: end (true)
→ Running command: session ('delete', [Function])
Request DELETE /session/a34ce4d57461f14f4b5e1d4d4db98e83
Response 200 DELETE /session/a34ce4d57461f14f4b5e1d4d4db98e83 (59ms)
{ value: null }
→ Completed command: end (true) (80ms)
→ Completed command: session ('delete', [Function]) (65ms)
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
️TEST FAILURE (21.557s):
- 2 errors during execution;
- 1 assertions failed; 2 passed
× 1) ecosia
– fail (13.732s)
→ ✖ NightwatchAssertError
Expected element @heading <//*[@data-test-id="layout-content"]//*[contains(@class,"heading")]> text to contain: "Settings" - element was not found - expected "contain 'Settings'" but got: "not present" (5215ms)
Error location:
C:\Users\tester\projects\learn-nightwatch\tests\ecosia.js:
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
18 | ecosia.expect.section("@navDropdown").to.be.visible;
19 | ecosia.section.navDropdown.selectOption("Settings"); // <- Error
20 | ecosia.expect.element("@heading").text.to.contain(option);
21 | });
22 | });
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
- OTHER ERRORS:
NoSuchElementError
An element could not be located on the page using the given search parameters.
{"status":-1,"message":"Timed out while waiting for element \"Section [name=navDropdown],//*[@data-track-id=\"menu\" and normalize-space()=\"Settings\"]\" with \"recursion\" to be present for 5000 milliseconds.","stack":"NoSuchElementError: Timed out while waiting for element \"Section [name=navDropdown],//*[@data-track-id=\"menu\" and normalize-space()=\"Settings\"]\" with \"recursion\" to be present for 5000 milliseconds.\n at ClickElement.noSuchElementError (C:\\Users\\tester\\projects\\learn-nightwatch\\node_modules\\nightwatch\\lib\\element\\command.js:417:12)\n at ClickElement.findElement (C:\\Users\\tester\\projects\\learn-nightwatch\\node_modules\\nightwatch\\lib\\element\\command.js:221:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async PeriodicPromise.perform (C:\\Users\\tester\\projects\\learn-nightwatch\\node_modules\\nightwatch\\lib\\utils\\periodic-promise.js:81:23)"}
Try fixing by :
1. Please inspect the html before the step
2. Verify if an element with the mentioned selector is present in the DOM tree
Error location:
C:\Users\tester\projects\learn-nightwatch\tests\ecosia.js:
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
17 | ecosia.click("@navMenu");
18 | ecosia.expect.section("@navDropdown").to.be.visible;
19 | ecosia.section.navDropdown.selectOption("Settings"); // <- Error
20 | ecosia.expect.element("@heading").text.to.contain(option);
21 | });
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
NoSuchElementError
An element could not be located on the page using the given search parameters.
Try fixing by :
1. Please inspect the html before the step
2. Verify if an element with the mentioned selector is present in the DOM tree
Wrote JSON report file to: C:\Users\tester\projects\learn-nightwatch\tests_output\CHROME_108.0.5359.125__ecosia.json
Wrote XML report file to: C:\Users\tester\projects\learn-nightwatch\tests_output\CHROME_108.0.5359.125__ecosia.xml
Wrote HTML report file to: C:\Users\tester\projects\learn-nightwatch\tests_output\nightwatch-html-report\index.html
Nightwatch Configuration
module.exports = {
src_folders: ['tests'],
page_objects_path: ['pages'],
custom_commands_path: [],
custom_assertions_path: [],
plugins: [],
globals_path: '',
use_xpath: true,
test_settings: {
default: {
desiredCapabilities: {
browserName: 'chrome',
'goog:chromeOptions': {
w3c: true
}
},
webdriver: {
start_process: true,
server_path: require('chromedriver').path,
},
},
},
};
Nightwatch.js Version
2.5.4
Node Version
18.12.1
Browser
Chrome 108.0.5359.125
Operating System
Windows 10 Pro Build 19044.2364
Additional Information
No response
bug p2