Selenium WebDriver MoveToElement – 隐藏元素,hover和toggleClass

Selenium WebDriver:2.35。 FireFox:25.0

我想将鼠标移到div上,这会导致隐藏的图像变得可见,然后单击图像。 我已经在这里 , 这里 , 这里和其他人阅读了这些post。 一般的答案是做一些forms的事情:

action.moveToElement(we).moveToElement(webdriver.findElement(By.xpath("/expression-here")).click().build().perform(); 

但是,这在以下示例中不起作用:

HTML:

 
Match

使用Javascript / jQuery的:

  $( document ).on( 'hover', '#bb_testDiv', function () { $( this ).find( '.bb_matchImgTest' ).toggleClass( 'bb_standardHidden' ); } ) $( document ).on( 'click', '.bb_matchImgTest', function () { alert('here'); } ) 

CSS:

 .bb_standardHidden { visibility:hidden; } 

C#测试代码:

 IWebElement testDiv = WebDriver.FindElement( By.Id( "bb_testDiv" ) ); Actions builder = new Actions( WebDriver ); Actions hoverClick = builder.MoveToElement( testDiv ).MoveToElement( testDiv.FindElement( By.ClassName( "bb_matchImgTest" ) ) ).Click(); hoverClick.Build().Perform(); 

问题是不会触发click事件。 此外,元素保持可见,因此任何后续鼠标hover都会隐藏它。 当然,这一切都适用于手动测试。

问题似乎与hover事件有关。 如果我把它分成两个事件 – mouseenter和mouseleave(而不是hover)与addClass和removeClass(而不是toggleClass)然后它工作。 只是想知道是否可以使用hover?

由于隐藏了元素.bb_standardHidden,因此可能是因为MoveToElement无法正常工作。

 IWebElement testDiv = WebDriver.FindElement( By.Id( "bb_testDiv" ) ); Actions builder = new Actions( WebDriver ); Actions hoverClick = builder.MoveToElement( testDiv ).MoveByOffset( x, y ).Click(); hoverClick.Build().Perform(); 

用x和y确保鼠标hover在隐藏的图片上。