2012-07-03 4 views
1

셀레늄에서이 마우스로 어떻게 해야할지 모르겠다. FF13에서 일하고 있습니다. 그리고 webdriver의 마지막 버전. C# Selenium webdriver mouseOver again

나는이 Is there a proved mouseOver workaround for FirefoxDriver in Selenium2?를 읽고 난이 똑같이했다 :

조치 = 새 작업 (드라이버) 빌더; 작업 hoverOverRegistrar = builder.moveToElement (menuRegistrar); hoverOverRegistrar.perform();

개체를 가리키면 잠시 동안 다른 개체 (드롭 다운 메뉴)가 표시되고 숨겨 지므로 셀 륨이 드롭 다운 메뉴를 클릭 할 시간이 항상있는 것은 아닙니다.

내가 뭘 잘못하고 있니?

답변

2

나는이 같은 몇 가지 일을해야 생각 -

Actions builder = new Actions(driver); 
builder.moveToElement(DropDown tab element).click().moveToElement(Tab you want to click element).click().build().perform(); 

어떤 problem.Please는 당신이 얻을 스택 추적을 게시가있는 경우.

+0

작동 방식 : 작업 builder = 새 작업 (드라이버); builder.moveToElement (드롭 다운 탭 요소) .moveToElement (요소를 클릭하려는 탭) .click(). build(). perform(); –

+0

그러나 나는 약간의 우아함 해결책이 존재한다고 생각했다. 내 코드가 그렇게 보일 것이라고 생각 : MyFirstElement.MouseOver(); MySecondElement.Click(); 하지만 이제는 MyFirstElement.MouseOver (MySecondElement)와 유사합니다. 글쎄 ... 그것은 아무것도 아닌 것보다 낫다. 고맙습니다. –

2

숨어있는 요소 자바 스크립트를 사용하는 것이 가장 좋습니다. 액션 빌더는 높은 실패율을 보이는 경향이 있으며 페이지를 스크롤 할 때 다른 호버 블 엘리먼트가 보이게되어 사용자가 애매하게하려는 엘리먼트를 유발합니다. 나는이 방법을 어딘가에 온라인으로 (어디에서 기억할 수없는) 발견했으며, 내가 시도한 다른 방법보다 훨씬 효과적이다.

String javaScript = "var evObj = document.createEvent('MouseEvents');" + 
       "evObj.initMouseEvent(\"mouseover\",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);" + 
      "arguments[0].dispatchEvent(evObj);"; 


IJavaScriptExecutor executor = driver as IJavaScriptExecutor; 
executor.ExecuteScript(javaScript, webElement); 

그냥, 당신이 그것을 사용할 수있는 장소에 방법에 그것을 던져 그것을 당신이 위로 마우스를 이동하고자하는 드라이버와 요소를 통과하고 당신이 설정됩니다.

관련 문제