수요
로그인 시뮬레이션 요청이 너무 복잡하기 때문에, Selenium을 사용해 Google Chrome을 열어 로그인 후 쿠키 값을 얻고, 쿠키 콘텐츠를 저장해 웹사이트의 관련 인터페이스로 요청하여 테스트를 자동화하고자 합니다.
셀레늄
Selenium은 웹 애플리케이션 테스트를 위한 도구입니다. Selenium 테스트는 실제 사용자가 하는 것처럼 브라우저에서 직접 실행됩니다. 지원되는 브라우저로는 IE(7, 8, 9, 10, 11), Mozilla Firefox, Safari, Google Chrome, Opera 등이 있습니다. 이 도구의 주요 기능은 다음과 같습니다: 브라우저 호환성 테스트 - 애플리케이션이 다양한 브라우저와 운영체제에서 잘 작동하는지 테스트할 수 있습니다. 시스템 기능 테스트 – 소프트웨어 기능과 사용자 요구사항을 검증하기 위한 회귀 테스트를 생성합니다. .Net, Java, Perl 등 다양한 언어로 동작 자동 기록과 테스트 스크립트 자동 생성을 지원합니다.
먼저, 프로젝트 이름이 "chrome-cookie-demo"이고 .NET 프레임워크 버전은 4.7.2인 새로운 C# 콘솔 프로젝트를 만들어봅시다.
nuget 명령어는 다음과 같습니다:
Selenium.WebDriver.ChromeDriver 설치 후 프로젝트 디버그 디렉터리에 chromedriver.exe 파일이 생성됩니다. Selenium.WebDriver는 추상적인 인터페이스로 이해되며, 각 브라우저가 스스로 이 인터페이스를 구현합니다. Selenium.WebDriver는 Selenium.WebDriver.ChromeDriver(chromedriver.exe)를 호출chromedriver.exe 얻은 매개변수에 따라 네이티브 설치된 구글 크롬을 실행한 후 해당 작업을 수행합니다.
물론, 전제 조건이 있습니다.컴퓨터에 Google Chrome이 설치되어 있어야 합니다。
코드는 다음과 같습니다:
오차는 다음과 같습니다:
System.InvalidOperationException: session not created: This version of ChromeDriver only supports Chrome version 83
즉, 현재 드라이버는 구글 크롬 83 버전을 지원하지 않는다는 뜻입니다. 컴퓨터에 설치된 버전을 다음과 같이 확인하세요:
(버전 71.0.3578.98)
기본 구글 크롬을 업그레이드하고 재시작하면 문제가 해결됩니다(또는 요구 조건에 맞는 브라우저 버전을 설치하세요).
우리는 크롬쿠키 데모 프로젝트를 다시 실행하려고 했고, 사이트는 정상적으로 열릴 수 있다는 것을 알게 되었지만,웹페이지가 로그인되어 있지 않습니다。 이 사이트를 열기 위해 브라우저를 클릭하면 상태가 로그인되어 있습니다.
해결책은 다음 코드로 user-data-dir 매개변수를 설정하는 것입니다:
프로그램을 재시작하면 다음과 같은 오류가 발생합니다:
처리되지 않은 예외: OpenQA.Selenium.WebDriverException: 유효하지 않은 인수: 사용자 데이터 디렉터리가 이미 사용 중이며, --user-data-dir 인자에 대해 고유 값을 지정하거나 -- user-data-dir OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary'2 parameters) In OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) OpenQA.Selenium.Remote.RemoteWebDriver에서: ctor(ICommandExecutor commandExecutor, ICapabilitys desiredCapabilities) OpenQA.Selenium.Chrome.ChromeDriver에서: ctor(ChromeDriverService 서비스, ChromeOptions 옵션, TimeSpan 명령어, TimeTimeout) OpenQA.Selenium.Chrome.ChromeDriver에서: ctor(ChromeDriverService 서비스, ChromeOptions 옵션) chrome_cookie_demo. Program.Main(String[] args) 위치 C:\Users\itsvse_pc\source\repos\chrome-cookie-demo\chrome-cookie-demo\Program.cs: 36번 행 대략적으로 폴더가 점유되어 있으니 교체해 주세요, 해결책은 다음과 같습니다:열려 있는 구글 크롬을 닫고 우리가 작성한 "chrome-cookie-demo" 프로그램의 사용자 데이터 폴더를 사용하세요。
웹 쿠키 받기
driver.manage().getCookies(); 모든 쿠키 목록 반환 driver.manage().getCookieNamed(arg0); 이름별로 특정 쿠키를 반환하세요 driver.manage().addCookie(arg0); 쿠키를 생성하고 추가하세요 driver.manage().deleteCookie(arg0); 특정 쿠키를 삭제하세요 driver.manage().deleteCookieNamed(arg0); 이름에 따라 특정 쿠키를 삭제하세요 driver.manage().deleteAllCookies(); 모든 쿠키를 삭제하세요 문서조사:하이퍼링크 로그인이 보입니다.
우리는 모든 웹 쿠키를 얻기 위해 테스트합니다
디스커버리,"HttpOnly"의 쿠키 정보를 읽을 수 있습니다., 아래 그림에서 볼 수 있습니다:
물론, 쿠키 정보를 문자열로 변환한 후 요청 제출 인터페이스를 시뮬레이션한 뒤, 소스 코드의 문자열에 변환 방법을 첨부해야 합니다.
소스 코드 다운로드:
하이퍼링크 로그인이 보입니다.
(끝)
|