WebdriverIO提供doubleClick()
命令。与其他命令不同,例如leftClick()
,doubleClick()
没有任何x y参数。我无法双击某个特定组件上的特定x y位置。我想这样做是因为应该在精确的双击位置插入子元素。
我已使用moveToObject()
首先将光标移动到特定位置,但doubleClick
不会选择此位置。它总是双击组件的中心。
此外,没有像'elementIdDoubleClick`这样的命令。并且,行动尚未实施。
有没有人知道如何双击组件中的特定x y坐标?
答案 0 :(得分:1)
您可以先使用self
移至元素,然后再使用doDoubleClick();
validates :name, :presence => true, on::create
但请确保已弃用 moveToObject ()和 doDoubleClick ()。
WDIO在不发布替代API的情况下不会删除它们。
并确保您使用doDoubleClick();
在您的应用启动配置中将这些警告静音。
答案 1 :(得分:1)
doDoubleClick()
似乎不适用于我的Chrome,而且我不确定为什么。我看到ChomeDriver是implementing actions as I write this。完成后,您将可以执行以下操作:
browser.moveToObject(someElement, x, y);
browser.actions().mouseDown().mouseUp().mouseDown().mouseUp().perform();
但是现在,当我使用ChromeDriver 2.45进行操作时,我得到了:
Error: unimplemented command: session/c4dae3dead96649fc7c26f75709257da/actions
因此,如果您离遥远的未来不远,那么这对我来说是有用的:
function doubleClick(someElement, x, y) {
let attempt = 0;
let timeToDoubleClick;
do {
browser.moveToObject(someElement, x, y);
let startTime = Date.now();
browser.buttonPress(0).buttonPress(0);
timeToDoubleClick = Date.now() - startTime;
console.log("Time to double click: " + timeToDoubleClick);
if (timeToDoubleClick > 500) {
console.log("Waiting 10 seconds to allow the CPU to breath / check to see if a tab has opened...");
browser.pause(10000);
// In my case I'm expecting a new tab to open
if(browser.getTabIds().length > 1) {
// The tab opened!
timeToDoubleClick = 0;
}
}
} while(timeToDoubleClick > 500 && attempt++ <= 5);
if(attempt > 5) {
throw new Error("Could not manage to double click!");
}
}