硒网络驱动程序:2.35。火狐:25.0
我想将鼠标移到一个 div 上,这将导致隐藏的图像变得可见,然后单击该图像。我已经阅读了这里、这里、这里和其他的帖子。一般的答案是做一些形式的事情:
action.moveToElement(we).moveToElement(webdriver.findElement(By.xpath("/expression-here")).click().build().perform();
但是,这在下面的示例中不起作用:
html:
<div id="bb_testDiv">
<img class="bb_matchImgTest bb_standardHidden" src='@Url.Content( "~/images/match.png" )' alt='Match'/>
</div>
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();
问题是没有触发点击事件。此外,该元素是可见的,因此任何后续的鼠标悬停都会隐藏它。当然,这一切都适用于手动测试。
问题似乎与悬停事件有关。如果我将其分解为两个事件 - mouseenter 和 mouseleave(而不是 hover)与 addClass 和 removeClass(而不是 toggleClass),那么它就可以工作。只是想知道是否可以通过悬停来实现这一点?