量角器:右键单击

时间:2015-11-26 02:18:10

标签: select protractor

我试图右键单击一个元素,然后选择一个选项"重命名"从列表中。我已经"右键点击"工作但不能从列表中选择选项。推荐链接12

注1:

1:右键单击可见的菜单选项是本机上下文菜单。所以,他们不会出现在我可以看到的DOM中。

2:该应用仅在Chrome浏览器中运行(不确定是否是浏览器问题)

我尝试过以下代码:

 browser.actions().mouseMove(elementVar).perform();
 browser.actions().click(protractor.Button.RIGHT).click(protractor.Button.ARROW_DOWN).click(protractor.Button.ARROW_DOWN).click(protractor.Button.ARROW_DOWN).perform();

考虑,"重命名"成为名单中的第三个选项。

注2: 如果我只是运行应用程序并输入' R'从我的键盘,它选择"重命名"选项。但是当我试图在我的测试中运行它时,它并没有选择"重命名"选项。见下面我试过的代码:

browser.actions().mouseMove(elementVar).perform();
browser.actions().click(protractor.Button.ARROW_RIGHT).sendKeys('R',protractor.Key.ENTER).perform();

以上代码均无效。如果需要更多信息,请与我们联系。

编辑:

我猜测会发生以下情况:

一旦我鼠标悬停,脚本"右键单击"之后"工具提示"被展示。自"工具提示"在&#34之后显示;右键单击"我认为菜单列表会显示在背景中(列表仍然可以与工具提示一起显示),这就是向下箭头键不起作用的原因。这可能吗?如果是,我如何等待工具提示不可见,然后右键单击?

输入:我试图等待工具提示不可见然后右键单击,但仍然是" Arrow_down"不起作用。

点击右键后,是否可以将菜单列表放在前面?

重要

我右键点击该元素后截取屏幕截图,屏幕截图并未显示"菜单列表"。以下是截图的代码:

    browser.actions().click(protractor.Button.RIGHT).perform()
     .then(function() {
         browser.takeScreenshot().then(function(screenShot) {
            writeScreenShot(screenShot, "image.png");
});
});

//writeScreenShot takes two variables actual screenshot data and the file name. And the screenshot is saved as "image.png"

需要做什么?

2 个答案:

答案 0 :(得分:0)

当您将ARROW个密钥发送到浏览器时,您必须将其作为密钥发送,而不是将其传递给click()功能,并且ARROW_DOWN密钥是Key的一部分对象而非BUTTON。这是怎样的 -

browser.actions().mouseMove(elementVar).perform();
browser.actions().click(protractor.Button.RIGHT).sendKeys(protractor.Key.ARROW_DOWN).sendKeys(protractor.Key.ARROW_DOWN).sendKeys(protractor.Key.ARROW_DOWN).perform();

第二次尝试时,您应该在RIGHT的位置发送protractor.Button.ARROW_RIGHT进行右键单击。当您向sendKeys()函数发送两个操作/键时,您必须使用chord对象加入它们,该对象组合了一次按两个键的操作(例如:CTRL + C用于复制)。但在你的情况下,我认为它没有必要。以下是如何使用它 -

browser.actions().mouseMove(elementVar).perform();
browser.actions().click(protractor.Button.RIGHT).sendKeys(protractor.Key.chord("r", protractor.Key.ENTER).perform(); //Not necessary as you wont be pressing R+ENTER in your keyboard

OR

browser.actions().click(protractor.Button.RIGHT).sendKeys('R').sendKeys(protractor.Key.ENTER).perform();

希望这有帮助。

答案 1 :(得分:0)

使用XPath解决您的问题

browser.actions().mouseMove(target).perform();
browser.actions().click(protractor.Button.RIGHT).perform();
element(by.xpath('//*[@id="context-menu"]/ul/li[1]')).click();

在你的情况下,它将是" // * [@ id =" context-menu"] / ul / li [3]"最有可能。