2013-07-31 2 views
4

내 프로젝트에 Selenium Webdriver를 사용하고 있습니다. 성공적으로 완료된 이미지 위에 마우스를 올리려면 코드를 자동화했습니다. 그러나, 어떻게이 코드로 하이퍼 링크로 마우스를 움직일 수 없었는지에 대한 설명이 있습니다.하이퍼 링크에서 마우스 오버하는 방법 - Webdriver

내가 사용하는 코드 나 또한

Locatable hoverItem = (Locatable) driver.findElement(); Mouse mouse = ((HasInputDevices) driver).getMouse(); mouse.mouseMove(hoverItem.getCoordinates())

를 사용하여 시도하지만 그것은 또한 밖으로 작동하지

Actions build1 = new Actions(driver); build1.moveToElement(WebElement).build().perform();

했다. 이 시도이

답변

0

에 제발 도와주세요 :

Actions action = new Actions(webdriver); 
WebElement we = webdriver.findElement(By.xpath("x_p_a_t_h")); 
action.moveToElement(we).build().perform(); 
+1

이것은 초기 행동'build1 = new Actions (driver);와 어떤 차이가 있습니까? build1.moveToElement (WebElement) .build(). perform();'? –

0

나는 DefaultSelenium 클래스의 public void mouseOver(String) 방법을 사용했습니다. .

또한 당신이 실패하기 전에 렌더링됩니다 요소를 확인하는 것은 귀하의 호버에 대기 시간의 일종 퍼팅으로 볼 필요가 있습니다
protected void hoverAction() { 
    WebDriverBackedSelenium webDriver = some_elaborate_method_to_get_webdriver; 
    webDriver.mouseOver("x_p_a_t_h"); 
} 

(예 날아 메뉴가 일반적으로 발사 : 코드의 핵심은 다음과 같다 링크에서 즉시 표시되지 않습니다).

+0

응답 해 주셔서 감사합니다. 하지만 이것 역시 효과가 없습니다. –

+0

@SudharsanSrinivasan 아마도 요소가로드되었는지 확인해야합니다. 필자의 구현에서는 Singleton 인스턴스를 얻기 위해 WebDriver를 아주 정교하게 확장했다. 일단 요소가로드되면 hoverAction 만 사용한다. 이 점에서 FirefoxDriver를 사용할 때 어떤 테스트 실패도 없었습니다. – radimpe

+0

예 요소가로드되었습니다. 하이퍼 링크를 클릭 할 수 있습니다. 하지만 그 위에 마우스를 올려 놓을 수는 없습니다. –

0

다른 모든 포스터는 내가 제안 할 수있는 모든 제안을 게시했지만 아무 것도 작동하지 않는 것 같습니다. 이 시점에 이르면 한발 뒤로 물러나서 왜 하이퍼 링크 위로 마우스를 가져 가야하는지 묻습니다. 그냥 대체 텍스트를 확인하는 것입니까? 이 경우 element.getAttribute ("alt")를 사용하여 텍스트가 예상 한 내용인지 확인합니다. 브라우저 호버 기능을 테스트 할 필요가 없습니다. 제가 제안 할 수있는 유일한 다른 방법은 테스트를 실행할 때 마우스 커서가 브라우저 창에 없는지 확인하는 것입니다. 그것은 또한 마우스 오버를 버릴 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 마우스를 가져 가면 하이퍼 링크의 색상을 가져와야합니다. 두 번째 요점에 관해서는 그렇습니다. 테스트를 실행할 때 커서가 브라우저 창에 없습니다. –

1

동일한 문제가있어서 커서를 1 픽셀 씩 이동하여 해결했습니다. 마지막 행은 호버 이벤트를 트리거했습니다.

Actions action = new Actions(driver); 
action.moveToElement(element).build().perform(); 
action.moveByOffset(1, 1).build().perform(); 
관련 문제