2012-06-08 4 views
0

테스트를 위해 Selenium Web 드라이버를 사용하고 있지만 로그인 페이지를 가져올 수 없습니다. 내가 사용하고 코드 :Selenium Web Driver - 로그인 이벤트가 시작되지 않습니다.

driver.Navigate().GoToUrl(baseURL + "URL"); 
driver.FindElement(By.Id("loginForm:username")).SendKeys("uName"); 
driver.FindElement(By.Id("loginForm:password")).SendKeys("pass"); 
driver.FindElement(By.Id("loginForm:login")).Click(); 

요소 로케이터가 올바른지 및 로그인 클릭이 일어나고 있지만, 내가 로그인하지,하지만 페이지가 그냥 붙어되지 않으면 - 오류 또는 무언가를. 같은 코드가 IDE에서 작동했습니다.

나는 IE9를 사용하고도 설정이 변경됩니다 :

var options = new InternetExplorerOptions(); 
      options.IntroduceInstabilityByIgnoringProtectedModeSettings = true; 
      driver = new InternetExplorerDriver(options); 

어떤 조언을하는 방법이 문제를 해결하는 방법을?

+0

어떤 드라이버를 사용하셨습니까? 엘리먼트에 다른 로케이터를 사용해 보셨습니까? IDE에서 같은 것을 시도하면 어떻게됩니까? – Arran

+0

InternetExplorerDriver를 지정된 옵션과 함께 사용하고 있습니다. 나는 다른 로케이터를 시도했지만, 말했듯이 버튼 클릭은 일어나고 있지만 그 이후에는 로그인 이벤트가 발생하지 않습니다. 그래서 나는 문제가 어딘가에 있다고 믿는다. 이것은 IDE에서 작동합니다 – andree

+0

IDE가 파이어 폭스에 있습니다. firefoxDriver를 사용해 보았는데 문제가 IEDriver에만 해당되는지 확인 했습니까? –

답변

1

이것은 나에게 매우 자주 발생하지만 확실한 이유가 아닌지 확실하지 않습니다.

로컬에서 테스트를 실행하면 모든 동작 (sendkeys, click 등)이 실제로 빠르게 발생합니다. loginForm:login 버튼은 사용자가 loginForm:usernameloginForm:password 필드에 텍스트를 입력 할 때까지 비활성화 상태로 유지 될 수 있습니다. 따라서 버튼 loginForm:login이 클릭되었을 때 활성화되지 않았을 가능성이 있습니다.

그래서 요소 아이디 loginForm:login이 클릭되기 전에 표시되는지 명시 적으로 확인하는 것이 좋습니다. 이 단계는 기본적으로 쓸모가 없지만 단순히 암호 텍스트 상자 필드에 "키 보내기"와 제출을 클릭하는 것 사이의 시간을 낭비하는 것입니다.

또한 빠른 확인을 위해 암호를 입력하고 로그인 버튼을 클릭하기 전에 sleep 2 (스크립트를 2 초 동안 잠자기 상태로 설정)과 유사한 작업을 수행 할 수도 있습니다.

원격 컴퓨터에서이 프로그램을 실행하려는 경우 위의 두 단계 중 하나를 수행 할 필요가 없으므로 컴퓨터 간 통신으로 인한 시간 지연으로 인해 전체 프로세스가 원활하게 작동 할 수 있습니다.

(링크 인 로그인 페이지에서도 동일한 문제가 발생합니다. 사용자 이름과 비밀번호를 입력하지 않으면 로그인 버튼을 사용할 수 없지만 웹 드라이브가 각 단계를 수행하는 속도는 클릭 할 때 로그인 버튼이 활성화되지 않습니다.)

관련 문제