Jasmine 在量角器中单击鼠标右键

Jasmine 在量角器中单击鼠标右键,jasmine,protractor,ag-grid,right-click,Jasmine,Protractor,Ag Grid,Right Click,我试图使用量角器右键单击一个元素,该元素是ag网格中的一个单元格 我试图使用我能找到的一些早期建议,唯一没有给我带来错误的建议是: browser.actions().mouseMove(elementVar).perform(); browser.actions().click(protractor.Button.RIGHT).perform(); 虽然它根本没有右键单击 有什么建议吗?找到了答案。我非常接近,但对于那些寻找这个问题的人来说,解决方案是: 传递给mouseMove函数的ele

我试图使用量角器右键单击一个元素,该元素是ag网格中的一个单元格

我试图使用我能找到的一些早期建议,唯一没有给我带来错误的建议是:

browser.actions().mouseMove(elementVar).perform();
browser.actions().click(protractor.Button.RIGHT).perform();
虽然它根本没有右键单击


有什么建议吗?

找到了答案。我非常接近,但对于那些寻找这个问题的人来说,解决方案是:

传递给mouseMove函数的elementVar应该是所需的元素位置。这是什么意思? 例如,假设我们有一个名为“el”的元素,我们希望右键单击它,我们的代码需要如下所示:

async function rightClick (el) {
    loc = el.getLocation();    //get the location of the element we want to click
    await browser.actions().mouseMove(loc).perform();   //takes the mouse to hover the element
    await browser.actions().click(protractor.Button.RIGHT).perform();    //performs the right click
};
从中,可以右键单击元素,从而:

browser.actions()
    .click($('.myElm'), protractor.Button.RIGHT)
    .perform();

基于@卤的答案,我设法找到了一个不使用mousemove或Jquery的方法

import { protractor } from 'protractor/built/ptor';

const ele = element(by.id('my_element');
browser.actions().click(ele, protractor.Button.RIGHT).perform();

非常确定这不是一个干净的解决方案,但是如果你使用的是无头chrome,上面所有的脚本都可以。 如果您使用的是普通chrome ant,则上述解决方案不起作用,请尝试此解决方案:

等待browser.actions().mouseMove(elementFinder.mouseDown().mouseMove(elementFinder.perform();

将此添加到我的
dragrator.conf.js
对我来说很有效:

{
  capabilities: {
    chromeOptions: {
      w3c: false
    }
  }
}

上看,这可能是一个黑客的解决方法(也是您已经尝试过的解决方案之一),但是否可以尝试告诉它按住另一个按钮,然后执行正常的单击?i、 在Mac电脑上,如果按住CTRL键并单击鼠标,它的行为就像右键单击。看起来应该是
keyDown(pergrator.Key.CONTROL)。执行()
,然后是单击事件?首先,谢谢!我在mac中用这个CTRL键学到了一些新东西。但不幸的是,当我在我的应用程序中使用它时,它为我提供了chrome的右键单击菜单,而不是我需要的网格菜单。