[英]How .elements() works in nightwatch?
考虑到我有多个 tr,我想选择一个并通过单击绑定到它的编辑按钮来编辑其中的值。
我正在做这样的事情:
browser.elements('css selector', '#someId tr', elements => {
elements.value.forEach(val => {
console.log(val)
}
当我运行browser.elements
并在elements.value
数组中记录条目时,我得到类似{ ELEMENT: '5' }
。 所以,回答你的问题:
- 'abcd-1234-qwer-0987' 到底是什么,这个会话 ID 是什么东西,它会改变吗?
可能是某种会话 ID,但我不确定。 不管它是什么,你不需要它来做你正在做的事情。
- 获取特定元素的最佳方法是什么?
如果我试图从几个相似的元素中选择一个,我的代码最终看起来像这样:
browser.elements('css selector', '#someId', result => {
// index is defined somewhere else
browser.elementIdClick(result.value[index].ELEMENT, () => {
// whatever you want to do after you click the element.
});
});
如果这对您不起作用,您能否分享您正在运行的操作系统和浏览器,以及您的守夜配置文件?
它返回的元素项是 Web Element json 对象。 一个 Web 元素 ID
https://nightwatchjs.org/api/commands/#elements
1. 'abcd-1234-qwer-0987' 到底是什么,这个会话 ID 是什么东西,它会改变吗?
是的,它会根据 Session 改变
2.什么是抓取特定元素的最佳方式
参考以下
使用 Nightwatch,如何从 ELEMENT 实体获取 DOM 元素及其属性?
browser.elements('css selector', '#someId tr', elements => {
console.log(elements);
elements.value.forEach(element =>{
let key = Object.keys(element)[0];
let ElementIDvalue = element[key];
console.log("key = ", key);
console.log("WebElementIDvalue = ", ElementIDvalue);
})
});
我发现的所有关于您尝试做的文档都说我应该能够使用
obj.ELEMENT<\/code>但他们没有说的是它需要在您的守夜人配置中将
w3c<\/code>设置为 false。
带有上下文的示例:
test_settings: {
default: {
end_session_on_fail: false,
disable_error_log: false,
launch_url: 'http://localhost:3000',
desiredCapabilities : {
browserName : 'chrome',
'goog:chromeOptions' : {
// More info on Chromedriver: https://sites.google.com/a/chromium.org/chromedriver/
//
// w3c:false tells Chromedriver to run using the legacy JSONWire protocol (not required in Chrome 78)
w3c: true,
args: [
'--auto-open-devtools-for-tabs',
//'--no-sandbox',
. . .
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.