Hello, Stranger

[Selenium] 설치 및 실행 - 간단한 Java 예제코드 본문

기타

[Selenium] 설치 및 실행 - 간단한 Java 예제코드

xunxou 2021. 2. 23. 22:25

회사에서 새 프로젝트를 오픈한지 3달이 지났다.

임원분들이 고객들의 반응이나 요구사항에 상당히 주의를 기울이고 있어서, 영업팀이 전달한 내용에 따라 디자인 또는 기능의 일부가 자주 변경되고 있다.

새로 추가된 기능들은 물론이고, 코드의 일부가 변경되는 경우에도 기존 기능들이 잘 동작해야하기 때문에 매번 전체 테스트가 필요했다.

가지고 있는 업무도 많은데, 이런 일들이 짧은 주기로 반복되었기 때문에(앞으로도 계속될 것이다..) 매번 수행하는 테스트는 나에게 무척이나 지난한 과정이었다. 

또, 디자인이 변경되는 경우 요소에 연결된 이벤트들이 변경되기때문에 고객이 사용하는것처럼 실제 동작을 수행하는 테스트가 필요했다.

이런 고민은 나만 하는게 아닐거라 생각해 검색해보다 selenuim 이라는 좋은 테스팅 도구를 알게되었다.

마침 이번달 들어서 야근을 안하고 있어 여유도 있고, 간단히 예제를 만들어 괜찮으면 회사 프로젝트에 적용해 볼 생각으로 예제를 진행해봤다.

 


 

환경


  • selenium Driver: Safari Driver
  • 언어:Java
  • OS: mac OS
  • IDE: IntelliJ

 

순서


  1. IntelliJ에서 maven 프로젝트 생성
  2. Selenium 라이브러리 가져오기
  3. Selenium web Driver 다운로드
  4. 간단한 Java 예제코드 작성 및 실행
  5. 기타: 진행하면서 직면한 문제들과 해결방안

 

과정


1. maven 프로젝트 생성

IntelliJ 에서 maven 프로젝트를 생성한다.

maven 프로젝트 생성과정은 아래 포스팅을 참고한다.

es2sun.tistory.com/248

 

[IntelliJ] Maven 프로젝트 생성

IntelliJ에서 Maven 프로젝트를 생성하는 방법이다. 과정은 아주 간단하다. IntelliJ 를 실행시키고 [Create New Project] 를 클릭한다. 왼쪽 목록에서 [Maven]을 선택한다. 상단의 Project SDK에 사용할 JDK를..

es2sun.tistory.com

 

2. Selenium 라이브러리 가져오기

MVN Repository 사이트에서 Selenium java 라이브러리 코드를 가져온다.

mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java

 

Maven Repository: org.seleniumhq.selenium » selenium-java

Selenium automates browsers. That's it! What you do with that power is entirely up to you. VersionRepositoryUsagesDate4.0.x4.0.0-beta-1Central1Feb, 20214.0.0-alpha-7Central4Nov, 20204.0.0-alpha-6Central7May, 20204.0.0-alpha-5Central5Mar, 20204.0.0-alpha-4C

mvnrepository.com

 

아래의 코드를 pom.xml 파일에 붙여넣는다.

3.141.59 버전을 사용했다.

<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.141.59</version>
</dependency>

 

처음 maven프로젝트를 사용하는 사람들을 위해 덧붙이자면 pom.xml 구조는 아래와 같아야한다.

<project>
	...
	
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>...</version>
  
  <dependencies>
	<!-- 여기에 dependency 추가 -->
  </dependencies>
</project>

 

3. Selenium WebDriver 다운로드

나는 Safari WebDriver를 사용할것이고, 아래와 같이 14버전의 Safari 를 사용하기때문에 별도로 다운로드하지 않았다.

참고로 10버전 이상의 Safari에는 WebDriver가 기본적으로 포함되어있기 때문에 다운로드하지 않아도 된다.

다만 별도로 원격 자동화 설정을 진행해야한다.

Chrome, firefox 등의 WebDriver를 사용하려면 각 WebDriver를 다운받아야한다.

나처럼 Safari WebDriver를 사용하지 않을것이라면 구글에 원하는 WebDriver를 검색하여 자신의 os에 맞는 파일을 다운받도록 한다.

다운 받은 파일을 같은 프로젝트 안에 위치시켜야하며, 해당 내용은 다른분들의 블로그에 잘 설명되어있으니 참고한다.

 

원격 자동화 허용

Safari의 WebDriver를 사용하려면 원격자동화 허용을 설정해야한다.

Safari가 선택되어있는 상태에서 왼쪽 상단의 [Safari] > [환경설정]을 클릭해 환경설정 창을 띄운다.

 

[고급] 탭을 클릭하면 아래와 같은 화면이 표시된다.

하단의 [메뉴 막대에서 개발자용 메뉴 보기] 에 체크 활성화한다.

 

위 과정을 수행하면  Safari를 활성화했을때 상단에 개발자용 메뉴가 나타난다.

해당 메뉴를 확장하면 아래와 같은 목록이 표시된다.  [원격 자동화 허용] 을 클릭한다.

 

 

 

4. 간단한 Java 예제코드 작성 및 실행

selenium 홈페이지에서 간단한 예제코드들을 언어별로 제공하고 있다.

www.selenium.dev/documentation/en/webdriver/web_element/

 

홈페이지에서 제공하는 예제 중 하나를 가져왔다.

정의된 URL 주소로 이동하여 활성화 되어있는 요소의 속성을 가져오는 코드이다.

package com.sun.Exam;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.safari.SafariDriver;

/**
 * selenium 사이트의 예제
 * https://www.selenium.dev/documentation/en/webdriver/web_element/
 */
public class FindActiveElement
{
    public static void main(String[] args)
    {
        WebDriver driver = new SafariDriver();

        try
        {
            driver.get("http://www.google.com");
            // name='q' 인 요소는 google 페이지의 검색 입력박스 이다. webElement라고 입력한다.
            driver.findElement(By.cssSelector("[name='q']")).sendKeys("webElement");

            // 현재 활성되어있는 요소의 title 속성을 가져온다.
            String attr = driver.switchTo().activeElement().getAttribute("title");
            System.out.println(attr);

        } finally {
            driver.quit();
        }
    }
}

 

 

5. 기타: 진행하면서 직면한 문제들과 해결방안

이번 예제를 진행하면서 가장 큰 시간도둑은 Cannot resolve symbol... 에러였다. (해결에 무려 3일이 걸렸다..)

해당 문제는 아래 포스팅에 따로 작성하였다.

es2sun.tistory.com/247

 

[IntelliJ] Cannot resolve symbol... 에러

토이 프로젝트를 위해 maven 프로젝트를 생성했다. 그런데 pom.xml에 maven dependency가 에러없이 설정됐음에도 불구하고 import가 수행되지 않는 현상이 발생했다. 그리고 문제를 해결하는데에는 3일이

es2sun.tistory.com

 

'기타' 카테고리의 다른 글

[MAC] Maven 설치 및 환경설정 (터미널 사용)  (0) 2020.09.12
[JSP]JSP 내장객체란?  (0) 2018.09.17
[JSP] JSP 의 영역(scope)  (0) 2018.09.14