我链接了单击“导航菜单”的操作,因此,我试图在Javascript / NodeJs Selenium Automation中使用此ActionSequence类。我知道Java中有相当简单的动作链接方法。这是Javascript中的类似事物吗?我该如何使用呢?以下是我参考过的文档和我尝试过的代码。有人可以写出一种确切的方式将其写下来,而不是一行使它起作用。我尝试了几种方法,但没有一种对我有用。我可能会犯一些愚蠢的错误,因为我对ins和javascript硒并不熟悉。
Class ActionSequence 用于定义复杂的用户交互序列的类。在调用{@link #perform}之前,不会执行每个序列。
示例:
new ActionSequence(driver).
keyDown(Key.SHIFT).
click(element1).
click(element2).
dragAndDrop(element3, element4).
keyUp(Key.SHIFT).
perform();
这是ActionSequence的文档。
我如何使用该课程?这是在Javascript Selenium中使用动作链接的最新内容吗?如果有什么新鲜事,请告诉我。
我试图在异步函数中使用它:
let actionSequence = new webdriver.ActionSequence(driver);
await actionSequence
.mouseMove(NavElementArray[0][1])
.mouseMove(NavElementArray[2][1])
.click()
.perform();
我是定义actionSequence还是使用正确的方法。错误'webdriver.ActionSequence不是构造函数'
请不要在Java或其他绑定中回答如何做。只需坚持使用Javascript NodeJs webdriverjs。谢谢。
答案 0 :(得分:0)
不确定您使用的是哪个版本,但
https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/actions_exports_LegacyActionSequence.html
似乎已弃用
尝试导入/新建LegacyActions(driver).chain1()。chain2()... chainN()。perform()
答案 1 :(得分:0)
在我项目的node-modules / selenium-webdriver中的index.js文件中添加了3行。
const actions = require('./lib/actions');
在const声明的第一个长列表之后
const LegacyActionSequence = actions.LegacyActionSequence;
在下一个较小的声明列表之后
exports.LegacyActionSequence=actions.LegacyActionSequence;
位于文件末尾的导出列表末尾。
我的代码,
await new LegacyActionSequence(driver)
.mouseMove(element,{x:0,y:0})
.perform()
之前显示的是
TypeError: LegacyActionSequence is not a constructor
目前,工作顺利。