selenium_(세팅 사용법)
(세팅)
selenium 검색
다운로드 폴더에서
1. java download
브라우저에서 + 누르고
2. 크롬 document 클릭
downloads에 Latest stable release: ChromeDriver 80.0.3987.16 chromedriver_win32.zip 다운
3. 적용을 위해 크롬 브라우저 확인
브라우저에서 도움말 > 크롬 > 정보 (최신정보 업데이트)
4. dev/selenium 폴더생성
chromedriver 넣기
client-combined-3.141.59 넣기
byte-buddy-1.8.15
commons-exec-1.3
guava-25.0-jre
okhttp-3.11.0
okio-1.14.0
5. 프로젝트 우클릭 프로퍼티즈
자바빌드패스 > 라이버르러 > 6개 다 넣기
-------------------------------------------------------------------------------
Selenium
- "Web Application" 의 UI테스트를 위한 자동화 도구
- 사람이 웹 브라우저를 실행/종료 시키거나 화면상의 컴포넌트를 제어하는 것을
진행할 수 있는 여러 메소드를 제공함
1. 크롬 드라이버 위치 지정 (필수)
System.setProperty("webdriver.chrome.driver", "c:/dev/selenium/chromedriver.exe");
2. 웹 브라우저 조작을 위한 객체
WebDriver 객체 생성
WebDriver driver = new ChromeDriver();
3. 네이버 접속하기
driver.get("https://www.naver.com");
4. 브라우저에서 검색창을 찾음
@ id 선택자
WebElement inputSearch = driver.findElement(By.id("query"));
@ className 선택자(복수)
List<WebElement> inputSearchs = driver.findElements(By.className(""));
@ css 선택자(복수)
List<WebElement> inputSearchs = driver.findElement(By.cssSelector(""));
개발자 도구에서 우클릭 copy
copy selector 하면 css태그를 복사해줌
@ xpath 선택자(복수)
Xpath란? XML 문서의 특정 요소나 속성에 접근하기 위한 경로
복수의 요소가 선택될 수 있음
List<WebElement>inputSearchs = driver.findElement(By.xpath(""));
개발자 도구에서 우클릭 copy
copy xpath
@ tagName 선택자
By.tagName("");
5. 검색어 입력
inputSerach.sendKey("");
5-1. 복수일경우(검색된 요소의 개수 확인)
System.out.println("검색된 개수 : " +inputSearchs.size());
5-2 list에 저장된 요소 중 첫번째 요소에 접근 + 검색어 입력
inputsearchs.get(0).sendkeys("");
6. 검색버튼찾기
WebElement searchBtn = driver.findElement(by.id("");
searchBtn.click();
6-1. 버튼이없이 제출하는 경우
inputSearchs.get(0).submit();
7. 검색버튼클릭
searchBtn.click();
8. 브라우저 종료
driver.close();
@ focus 바꾸기(자식으로 이동)
driver.switchTo().frame("아이프레임아이디");
@ 자동화 도구의 focus를 부모 프레임으로 다시 변경
driver.switchTo().parentFrame();
로그인 버튼 클릭(자바스크립트 함수이용)
javascriptExecutor 인터페이스
- 셀레니움에서 자바스크립트 코드를 실행할 수 있게 해주는 역할
- 자바스크립트 뿐만 아니라 제이쿼리도 사용 가능
@ 사용하기위해 강제 형변환
JavascriptExecutor exe = (JavascriptExecutor)driver;
exe.executeScript("fnLogin()"); //fnLogin() 함수 실행
@ 얼러트 창 컨트롤
driver.switchTo().alert().accept();
@ 대기
1. 명시적 대기
특정 요소가 나타날 떄 까지 지정한 최대 시간 만큼 대기하는 방식
WebDriverWait wait = new WebDriverWait(driver, 10); // 10초 대기
// 웹페이지 타이틀에 "훈련생도 평가" 글자가 표시될 때 까지 명시적 대기
wait.until(ExpectedConditions.titleContains("훈련생도 평가"));
2. 묵시적 대기
묵시적(암시적) 대기(Implicitly Wait)
- 웹 드라이브가 발생 시키는 예외들은 일정 시간동안 대기 시키고
그 시간도안 동작을 재시도함
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);