首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过CSS选择器查找Nightwatch.js的问题(最新版本)

通过CSS选择器查找Nightwatch.js的问题(最新版本)
EN

Stack Overflow用户
提问于 2017-04-19 17:29:02
回答 1查看 1.6K关注 0票数 1

我查看了this question关于CSS选择器的问题。公认的答案是完全脱离nightwatch.js。我希望现在的情况不是这样,而是有问题。

我已经升级到最新可用的nightwatch.js v0.9.14,但无法在屏幕上找到我可以使用jQuery找到的元素。

使用下面的选择器(必要的层次结构,因为它在jqGrid中):

代码语言:javascript
运行
复制
.click("#MedicalHistoryAmendment_sheet tbody tr:eq(1) > td:eq(4) > select")

我得到:

代码语言:javascript
运行
复制
ERROR: Unable to locate element: "#MedicalHistoryAmendment_sheet tbody tr:eq(1) > td:eq(4) > select
 using: css selector

另外,尝试this question中的选择器方法(因为ids是动态的),所以不愿意这样做:

代码语言:javascript
运行
复制
 .click('select[id="null_z01rsnload_inst_ref"]')

在以下方面失败:

代码语言:javascript
运行
复制
ERROR: Unable to locate element: "select[id="null_z01rsnload_inst_ref"]" using: css selector

在控制台中使用jQuery:

代码语言:javascript
运行
复制
$("#MedicalHistoryAmendment_sheet tbody tr:eq(1) > td:eq(4) > select")

返回:

代码语言:javascript
运行
复制
[select#null_z01rsnload_inst_ref.editable, prevObject: init(1), context: document, selector: "#MedicalHistoryAmendment_sheet tbody tr:eq(1) > td:eq(4) > select"]

我以前也遇到过类似的问题(特别是select的和他们的选项) but the method mentioned in the answer by 79E09796 has worked for me previously

这是在Chrome (我们的主要目标,我们目前还没有为其他平台进行自动化测试)上使用chromedriver.exe版本2.28。它不是在一个iframe里面。

在夜报命令行中添加“--详细”给了我:

代码语言:javascript
运行
复制
INFO Request: POST /wd/hub/session/50a51b48-bce9-425d-a132-2d0407c8ac21/elements
 - data:  {"using":"css selector","value":"#MedicalHistoryAmendment_sheet tbody tr:eq(1) > td:eq(7) select"}
 - headers:  {"Content-Type":"application/json; charset=utf-8","Content-Length":98}
ERROR Response 500 POST /wd/hub/session/50a51b48-bce9-425d-a132-2d0407c8ac21/elements (1019ms) { sessionId: '50a51b48-bce9-425d-a132-2d0407c8ac21',
  status: 32,
  value:
   { message: 'invalid selector: An invalid or illegal selector was specified\n
..<snip>..

任何进一步的想法都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-24 19:05:36

正如@BoltClock所说,eq()运算符不是有效的CSS选择器,而是特定于jQuery的。我改为使用nth-child()

所以:

代码语言:javascript
运行
复制
.assert.elementPresent("#MedicalHistoryAmendment_sheet tbody tr:eq(1) > td:eq(7) select")

需要:

代码语言:javascript
运行
复制
.assert.elementPresent("#MedicalHistoryAmendment_sheet tbody tr:nth-child(2) > td:nth-child(8) select")

要进行更改,您需要将索引增加1,并记住它可能会获取额外的元素depending on the structure​。

这类中只有jQuery的其他选择器是gt()lt()

谢谢大家的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43502397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档