Javascript PhantomJS鼠标右键单击赢得';不能使用selenium webriverJS
我正在将selenium与webdriverJS结合使用,试图自动化简单的web应用程序。 问题是当从chrome切换到phantomJS测试时,无法按预期工作: 鼠标右键无法打开关联菜单。有没有人遇到过这样的问题,有什么解决办法? 以下是小代码示例: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
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()