2014-01-17 2 views
2

У меня есть страница test.html, вот код для него.Как скрипт может выполняться в Selenium JavascriptExecutor

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html> 
    <head> 
    </head> 
    <body> 
     <span id="test" onMouseover="alert('1')">this is new one</span> 
    </body> 
</html> 

Я хочу использовать Selenium JavascriptExecutor для имитации мыши события на пролете в тестовой странице, так что я написал такой код:

@Test 
public void testJSExecutor(){ 
    System.setProperty("webdriver.firefox.bin", "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); 
    webDriver = new FirefoxDriver(); 
    webDriver.get("file:\\\\C:/test.html"); 

    String script = "function test(){var t=document.getElementById('test');" 
      + "if(document.createEvent) {" 
      + "var evObj = document.createEvent('MouseEvents');" 
      + "evObj.initEvent('mouseover', true, false);" 
      + "elem.dispatchEvent(evObj);" 
      +"} else if(document.createEventObject) {" 
      + "elem.fireEvent('onmouseover');" 
      +"}} window.onload=test;"; 
    jsExecutor = (JavascriptExecutor) webDriver; 
    jsExecutor.executeScript(script); 
} 

Но после запуска этого кода, оповещения не побудило.

Как может отображаться событие мыши, поэтому может появиться предупреждение?

+0

Вы пытались использовать класс действия, чтобы сделать MouseOver? –

ответ

3

Вы можете моделировать действия мыши при наведении, используя код ниже ..

Actions actions = new Actions(driver); 
WebElement menuHoverLink = driver.findElement(By.id("test")); 
actions.moveToElement(menuHoverLink); 
actions.perform(); 
+0

Это работает! Большое спасибо. :) И жаль, что не могу проголосовать за ваш ответ, из-за меньшей репутации. :( – carmentian

+0

Рад, что это помогло. Угадайте, что вы можете принять ответ. –

+0

Принял этот ответ, еще раз спасибо за помощь. :) – carmentian