2013-11-12 5 views
1

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), тогда он работает. Просто интересно, можно ли это работать с зависанием?

ответ

3

Поскольку элемент .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, чтобы убедиться, что мышь будет по скрытой картинке.

+0

Спасибо за мысль, но это не помогло. Скрытое изображение отображается, когда вы переходите к testDiv, но не нажимаете. Кажется, что-то связано с событием hover, потому что, если я изменю hover на mouseenter/mouseleave, тогда все будет хорошо. – acarlon

Смежные вопросы