study/selenium

selenium_(세팅 사용법)

스파이크12 2020. 2. 6. 08:44

(세팅)

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);