前文提到 Nightwatch 本身自带有 click()
事件,只是 Safari 点击 div 会失败。
不过还有其他情况是,即使不是使用 Safari 进行 E2E 也会出现的问题。
这个一个 Sticky 的 Footer,也就是会固定显示在画面最下方。
Sticky Footer 可能用在显示次要资讯、进度条或是功能选单
假设在某段之後有个 Button 需要点击,如果使用 click()
会出现
An error occurred while running .click() command on <button>: element not interactable
这是因为 click()
这个指令虽然可以 scroll into view,但也就是滚动浏览器直到物件出现在萤幕可见区域。因此是会被固定的 Footer 挡住的。
解决方法有几个:
clickDiv()
)setValue()
clickDiv()
如同前文提到的方法,直接使用 document.queryselector(selector).click()
点击,不过要注意的是,并不是每个 tag 都有 click()
事件。如:<svg>
scrollIntoView()
既然原本的 click()
带的 scroll into view 不好,那就自己写一个吧!
做法也很简单,只要带入 center 的参数就好了:
document.querySelector(selector).scrollIntoView({
behavior: 'smooth',
block: 'center',
inline: 'center',
});
command 的形式:
exports.command = function(selector, callback) {
callback = callback || function() {};
this.execute(
function(selector) {
document.querySelector(selector).scrollIntoView({
behavior: 'smooth',
block: 'center',
inline: 'center',
});
},
[selector],
function(result) {
callback.call(this, result);
},
);
return this;
};
setValue()
这个我觉得算是比较 tricky 的方式,主要是利用对 button 送出空白键来触发点击:
browser.setValue('button', ' ');
如果如果单纯只是想测试按钮是不是好的,其实前文的 clickDiv()
就可以了,不过如果有串像 BrowserStack 能够自动截图和录影的服务,其实模拟真实操作还是比较好的。而 setValue()
也可以滚动到视窗显示范围,并且成功送出,只不过录影或截图画面还是看不到按钮本身。
<<: [Day08] Flutter with GetX image_cropper 照片裁切
学习目标 For回圈 、二维阵列&巢状回圈、class模板 **For回圈 ** For回圈...
延续 Docker 启动 process 的主题,因 container 即 process,因此合...
前言 retrofit负责请求网路资料请求,rxjava负责异步执行、thread之间的切换,今天实...
D3js 浪漫突进的回顾及展望 你只要顾好你会的、你喜欢的,一直讲、拼命讲,展现你的魅力! -- 浪...
梯度下降法经常被使用为优化学习的一种方式,寻找局部最佳解(至於为何是局部,之後会提到),想像有个...