2012-03-23 3 views
0

지금 당장 기괴한 문제가 있습니다. 일부 승인 테스트를 시작하고 NUGet 최신 Selenium Webdriver에갔습니다. 잘 설치하고 그냥 모든 작업이었다 증명하기 위해 빠른 테스트를 썼습니다 : 모든 확인을 포함하고 내가 만든 및 Resharpers 테스트 러너를 통해 테스트를 실행,Selenium Webdriver 2.20 .net 클라이언트, 종속성 문제?

[Test] 
public void should_navigate_to_google() 
{ 
    var driver = new FirefoxDriver(); 
    driver.Navigate().GoToUrl("http://www.google.co.uk"); 
} 

이 프로젝트는 .NET 4를 사용하여 단지 기본 클래스 라이브러리입니다.

OpenQA.Selenium.WebDriverException : 그럼 아래의 오류가있어 오류가 발생 ----> System.IO.FileNotFoundException 파이어 폭스에 연결 동안 : 파일 또는 어셈블리를로드 할 수 없습니다 'Ionic.Zip, 버전 = 1.9.1.8, 문화 = 중립, PublicKeyToken = edbe51ad942a3f5c '또는 종속성 중 하나입니다. 시스템이 지정된 파일을 찾을 수 없습니다. OpenQA에서 OpenQA.Selenium.Firefox.FirefoxExtension.Install에서 --FileNotFoundException에서 OpenQA.Selenium.Firefox.FirefoxDriver..ctor()에서 OpenQA.Selenium.Firefox.FirefoxDriver.StartClient() (문자열 profileDir)에서. OpenQA.Selenium.Firefox.FirefoxDriver.StartClient에서 OpenQA.Selenium.Firefox.Internal.ExtensionConnection.Start()에서 OpenQA.Selenium.Firefox.FirefoxProfile.WriteToDisk()에서 Selenium.Firefox.FirefoxProfile.InstallExtensions()

저는 약간 당황했고 아마도 라이브러리의 .net 3.5 버전을 사용할 필요가 있다고 생각했습니다. 아무런 실수가 없었습니다. 그런 다음 .net 4로 돌아가서 속성에서 특정 버전을 사용하도록 어셈블리를 말했지만 여전히 운이 없다.

확답 나는 Firefox 용 기본 빌드에 설치되어있다. 파이어 폭스 프로파일에 파이어 폭스 프로파일에 대한 링크를 제공하고 파이어 폭스 바이너리를 만들었고 어디서 볼 수 있는지도 알려 주었다. 그런 다음 NUGet 버전을 해킹하고 웹 사이트에서 클라이언트 드라이버 바이너리를 얻었습니다. 동일한 문제입니다.

다른 CPU 유형에 맞게 버전을 변경하려고 시도한 후에 아이디어가 부족합니다. 이와 같은 문제는 거의 문서화되어 있지 않으므로 여기에 유용한 정보가 있습니다.

  • 윈도우 7 프로페셔널 64 비트
  • 비주얼 스튜디오 2010 프리미엄 (ReSharper에서 6)
  • 파이어 폭스 (11)는

내가 확인하기 위해 인터넷 익스플로러의 드라이버를 사용하여 시도 (위치를 기본값으로 설치) 파이어 폭스와 관련된 특정 문제가 아니 었는지 확인하십시오. 다음과 같은 오류가 발생합니다.

System.IO.FileNotFoundException : Could not load file or assembly 'Newtonsoft.Json, Version=4.0.6.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified. 
at OpenQA.Selenium.Remote.Command.get_ParametersAsJsonString() 
at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute) 
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(DriverCommand driverCommandToExecute, Dictionary`2 parameters) 
at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) 
at OpenQA.Selenium.IE.InternetExplorerDriver..ctor() 

그래서 지금은 아이디어에서 나는 지금까지 약 3 시간을 낭비 :(

답변

3

나는 웃을 수 없지만, 나는 울고있다.

이것은 아마도 지금까지 가장 바보 같은 루키 실수 중 하나 일 수 있습니다. 나는 쉽게 내 문제를 알아야합니다. 저는 2 개의 새로운 프로젝트를 만들었습니다. 하나는 새로운 단위 테스트를, 하나는 수용 테스트에 참여했습니다. 그런 다음 WebDriver의 모든 종속성을 수용 테스트 프로젝트로 가져 와서 모두 작동했음을 증명할 수있는 Class1 파일에서 테스트를 진행했습니다.

내 문제가 시작되었습니다 ... 제가 실감하지 못한 것은 Resharper가 행복하게 WebDriver dll을 참조 용으로 포함시킨 단위 테스트 프로젝트에 테스트를 작성하는 것이었지만, 테스트 프로젝트. 나열된 어셈블리를 사용할 수 없음을 의미합니다.

어쨌든 여기에는 실제 문제가 없지만, 사람들이 지적하고 잘못된 Class1.cs를를 사용하는 사람이 웃을 수 있도록 내가 여기이 질문을 떠나 단지 사람이 나와 같은 일을 할 정도로 바보 넣다 파일 :)

2

셀레늄이 (당신이 지원 클래스를 사용하는 경우 가능성이 Castle.Core) Newtonsoft.JsonDotNetZip의 특정 버전을 사용할 수밖에 없다. 각각을 제거한 다음 NuGet을 통해 Selenium 패키지를 제거하고 Selenium을 다시 설치하십시오. 설치 후 Selenium을 업데이트하지 않는 한 종속성을 업데이트하지 마십시오 (어쨌든 그렇게 함).

또한 테스트 어셈블리가 클라이언트 프로필이 아닌 전체 .NET Framework로 설정되어 있는지 확인하십시오.

+0

내가 언급 한 것처럼 프로젝트와 패키지에서 NUGet 파일을 완전히 삭제했다. (잘 NUGet을 제거했지만 두 번 삭제되었다는 것을 확인했다.) 그런 다음 사이트에서 클라이언트 드라이버를 다운로드하여 패키지의 다른 폴더에 넣고 사용했다. 그들. 따라서 그들은 사이트에서 다운로드 한 2.20의 zip 버전으로 모두 컴파일됩니다. 또한 클라이언트 프로필이 아닌 전체 .net 대상을 대상으로합니다. – Grofit

+0

그리고 WebDriver는 강력한 이름의 어셈블리를 제공합니다. 즉, WebDriver는 특정 버전의 종속성에 연결되어야하며 NuGet 종속성 **은 특정 버전이어야하며 일반적인> = 종속성이 아니어야 함을 의미합니다. NuGet이이 시나리오에 대해 더 나은 이야기를 제공하면 문제가 해결됩니다. – JimEvans