Nightwatch.js执行.setValue()时选择器无效的问题求助
解决Nightwatch.js中setValue()的无效选择器错误
嘿,我一眼就发现问题所在了——你的元素选择器格式不正确,导致Nightwatch没法定位到Google高级搜索的输入框!
问题根源
你写的选择器 const searchBar = 'name="as_q'; 有两个明显问题:
- 缺少结尾的闭合引号,语法本身不完整
- 没有遵循CSS选择器的规范——属性选择器需要用
[attribute="value"]的格式包裹
浏览器无法识别这种错误的选择器,所以才会抛出NoSuchElementError,提示你使用了无效的XPath/CSS选择器。
修正后的代码
直接把选择器改成标准的CSS属性选择器就能解决问题,另外建议加上.end()来结束测试会话,避免资源浪费:
'Google advanced search'(browser){ const value = 'apple'; // 正确的CSS属性选择器格式 const searchBar = '[name="as_q"]'; browser .url('https://www.google.com/advanced_search') .setValue(searchBar, value) .saveScreenshot('tests_output/google.png') .end(); }
其他可选的定位方式
除了用name属性,你还可以用以下方式定位这个输入框:
- 通过id选择器:不过要注意Google的元素id可能会动态变化,稳定性不如name属性
const searchBar = '#xX4UFf'; - 通过XPath选择器:如果习惯用XPath也可以这么写
const searchBar = '//input[@name="as_q"]';
内容的提问来源于stack exchange,提问作者mihneaz
相关产品推荐
相关产品推荐

