Javascript PhantomJS鼠标右键单击赢得';不能使用selenium webriverJS

Javascript PhantomJS鼠标右键单击赢得';不能使用selenium webriverJS,javascript,selenium,selenium-webdriver,phantomjs,Javascript,Selenium,Selenium Webdriver,Phantomjs,我正在将selenium与webdriverJS结合使用,试图自动化简单的web应用程序。 问题是当从chrome切换到phantomJS测试时,无法按预期工作: 鼠标右键无法打开关联菜单。有没有人遇到过这样的问题,有什么解决办法? 以下是小代码示例: return driver.actions() .mouseMove(driver.findElement(mapping.xpath.spaceSpace), {x:120, y:120}) .click(ma

我正在将selenium与webdriverJS结合使用,试图自动化简单的web应用程序。 问题是当从chrome切换到phantomJS测试时,无法按预期工作: 鼠标右键无法打开关联菜单。有没有人遇到过这样的问题,有什么解决办法? 以下是小代码示例:

 return driver.actions()
        .mouseMove(driver.findElement(mapping.xpath.spaceSpace), {x:120, y:120})
        .click(mapping.key.mouseRightButton)
        .perform()
尝试删除坐标,在单击操作中添加坐标,以及不同的鼠标事件-无。
但同样的测试在chrome、firefox和ie中运行得完美无缺。

此问题已得到解决,但尚未发布:

在修复之前,以下是一些解决方法:

JAVA python
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.phantomjs.PhantomJSDriver;

public void contextClick(WebDriver driver, WebElement element) {
    if(driver instanceof PhantomJSDriver) {
        String script =
                "var element = arguments[0];" +
                "var event = document.createEvent('HTMLEvents');" +
                "event.initEvent('contextmenu', true, false);" +
                "element.dispatchEvent(event);";
        ((JavascriptExecutor)driver).executeScript(script, new Object[]{element});
    } else {
        (new Actions(driver))
                .contextClick(element)
                .build()
                .perform();
    }
}
from selenium.webdriver.remote.webdriver import WebDriver
from selenium.webdriver.remote.webelement import WebElement
from selenium.webdriver import PhantomJS, ActionChains

def context_click(driver, element):
    # type: (WebDriver, WebElement) -> ()
    if isinstance(driver, PhantomJS):
        script = "var element = arguments[0];" \
                "var event = document.createEvent('HTMLEvents');" \
                "event.initEvent('contextmenu', true, false);" \
                "element.dispatchEvent(event);"
        driver.execute_script(script, element)
    else:
        ActionChains(driver) \
            .move_to_element(element) \
            .context_click() \
            .perform()