我正在使用selenium和webdriverJS,试图自动化简单的网络应用程序。 问题是从chrome切换到phantomJS测试没有按预期工作: 鼠标右键不打开上下文菜单。有没有人有这样的问题,有什么解决方案吗? 这是一个小代码示例:
return driver.actions()
.mouseMove(driver.findElement(mapping.xpath.spaceSpace), {x:120, y:120})
.click(mapping.key.mouseRightButton)
.perform()
尝试删除坐标,在点击操作中添加它们,还有不同的鼠标事件 - 没有。 但同样的测试在chrome,firefox和ie。
中运行完美无缺答案 0 :(得分:0)
此问题已解决,但尚未发布:https://github.com/ariya/phantomjs/issues/14005
在修复之前,以下是一些解决方法:
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()