Selenium WebDriver: 2.35. FireFox: 25.0Selenium WebDriver MoveToElement - скрытый элемент, зависание и toggleClass
Я хочу переместить указатель мыши на div, что приведет к тому, что скрытое изображение станет видимым, а затем щелкните изображение. Я прочитал сообщения here, here, here и другие. Общий ответ сделать что-то вида:
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 (вместо зависания) с addClass и removeClass (вместо toggleClass), тогда он работает. Просто интересно, можно ли это работать с зависанием?
Спасибо за мысль, но это не помогло. Скрытое изображение отображается, когда вы переходите к testDiv, но не нажимаете. Кажется, что-то связано с событием hover, потому что, если я изменю hover на mouseenter/mouseleave, тогда все будет хорошо. – acarlon