Selenium 2 + phantom js:无法对鼠标悬停执行操作

时间:2014-04-14 16:15:45

标签: java selenium phantomjs mouseover

我试图对一个从未完成的按钮执行操作。

final Actions action = new Actions(mDriver);
    final WebElement myCart = mDriver.findElement(By.cssSelector("path to my span"]"));
    final WebElement myButton = mDriver.findElement(By.cssSelector("path to my button"));
    action.moveToElement(myCart).build().perform();
    action.moveToElement(myButton).click().build().perform();

此代码与firefox完美配合,但与幻像JS无关

我在How to handle Mouseover in Selenium 2 APIHow to perform mouseover function in Selenium WebDriver using Java?找到了一些问题但是没有任何关于幻像的问题。

是否有任何已知的解决方法?

谢谢!

1 个答案:

答案 0 :(得分:0)

一年前我使用GhostDriver和PhantomJS时遇到了类似的问题(FYI article)。实际上我也遇到了IE_Driver和Chrome_Driver的问题,主要与screen_frame外部元素的可见性有关(页面必须向下滚动)。

最严重的问题之一是upload_window并通过已经提到的方式处理它。我无法实现它。但我的解决方法是在这些有问题的地方切换/转换驱动程序,并在完成/处理操作后 - 将其切换回GhostDriver。即使这样做,执行速度也令人印象深刻。

希望这会有所帮助 - 甚至迟到。

<强> 更新

find IWebElement to process
set WebDriver from GhostDriver to FirefoxDriver
process the IWebElement item with current WebDriver as FirefoxDriver
verify expected result from processing the IWebElement item
set back WebDriver from FirefoxDriver to GhostDriver 
continue workflow

据我记得我的Test框架实现 - 一个BaseTest类负责初始化使用过的WebDriver和ISelenium对象。因此,对于更具体的案例,您可以尝试:

// Create a new instance of the Ghost driver
// Notice that the remainder of the code relies on the interface, 
// not the implementation.
WebDriver driver = new GhostDriver();
//do stuff until new driver is needed
driver = new FirefoxDriver();
//do stuff with new driver
//'cast' back after required operations have been completed and verified
driver = new GhostDriver();