Selenium 라이브러리는 웹 페이지를 크롤링, 조작 할 수 있다.
1. Selenium 라이브러리 다운
https://www.seleniumhq.org/download/ 의 사이트에 접속하여 Java 버전을 다운받아 준다.
다운 받은 파일을 압축해제 후 library를 등록하여 준다.
( Project -> Properties -> Add External jARs..)
2. 브라우저 드라이버 다운
브라우저 드라이버가 있어야 테스트를 진행할 수 있다.
다운로드 링크 : http://chromedriver.chromium.org/downloads
77.0으로 할 경우 에러가 나기 때문에 76.0버전으로 다운받아 주었다.
에러가 나지 않는 드라이버를 찾아서 다운받으면 된다.
다운 받은 파일은 압축을 풀어 쉬운 경로에 두면 된다.
웹 조작하기
이제 웹을 조작해볼 차례이다.
이 네이버에 로그인을 하는 예제를 만들 것 이다.
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class SeleniumTest {
//WebDriver
private WebDriver driver;
private WebElement element;
private String url;
//Properties
public static String WEB_DRIVER_ID = "webdriver.chrome.driver";
public static String WEB_DRIVER_PATH = "D:/chromedriver.exe";
public static void main(String[] args) {
SeleniumTest test = new SeleniumTest();
}
public SeleniumTest() {
//System Property SetUp
System.setProperty(WEB_DRIVER_ID, WEB_DRIVER_PATH);
//Driver SetUp
ChromeOptions options = new ChromeOptions();
options.setCapability("ignoreProtectedModeSettings", true);
driver = new ChromeDriver(options);
url = "https://www.naver.com";
}
}
여기 까지는 기본 세팅이다.
다운받은 chromedriver.exe 위치와 url등을 세팅해 주었으니 페이지에 접속하여 로그인 하는 부분을 만들어 주면 된다.
우선 네이버에 접속하여 로그인 버튼 클릭하는 부분까지 만들어 보자
로그인버튼은 a태그로 되어잇고 class 이름이 lg_local_btn로 되어있다.
public void oper() {
try {
//get방식으로 url 요청
driver.get(url);
//로그인 버튼 클릭
element = driver.findElement(By.className("lg_local_btn"));
element.click();
Thread.sleep(10000);
} catch (Exception e) {
e.printStackTrace();
} finally {
driver.close();
}
}
driver.get(url)로 페이지에 접속하여 class 이름이 lg_local_btn인 a태그를 클릭해 주었다.
그 다음, 로그인 페이지에서 아이디와 비밀번호를 입력해 주어야 한다.
아이디의 id는 id 패스워드의 id는 pw이다.
//아이디 입력
element = driver.findElement(By.id("id"));
element.sendKeys("아이디 입력");
//패스워드 입력
element = driver.findElement(By.id("pw"));
element.sendKeys("비밀번호 입력");
이제 로그인 버튼을 찾아서 submit만 해주면 끝난다.
근데 .. 네이버는 이렇게 로그인을 하니 보안문자를 입력하라고 나온다 ..
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class SeleniumTest {
//WebDriver
private WebDriver driver;
private WebElement element;
private String url;
//Properties
public static String WEB_DRIVER_ID = "webdriver.chrome.driver";
public static String WEB_DRIVER_PATH = "D:/chromedriver.exe";
public static void main(String[] args) {
SeleniumTest test = new SeleniumTest();
test.oper();
}
public SeleniumTest() {
//System Property SetUp
System.setProperty(WEB_DRIVER_ID, WEB_DRIVER_PATH);
//Driver SetUp
ChromeOptions options = new ChromeOptions();
options.setCapability("ignoreProtectedModeSettings", true);
driver = new ChromeDriver(options);
url = "https://www.naver.com";
}
public void oper() {
try {
//get방식으로 url 요청
driver.get(url);
//로그인 버튼 클릭
element = driver.findElement(By.className("lg_local_btn"));
element.click();
//아이디 입력
element = driver.findElement(By.id("id"));Thread.sleep(500);
element.sendKeys("아이디 입력 ex)test1234");
//패스워드 입력
element = driver.findElement(By.id("pw"));
element.sendKeys("비밀번호 입력");
//전송
element = driver.findElement(By.className("btn_global"));
element.submit();
Thread.sleep(10000);
} catch (Exception e) {
e.printStackTrace();
} finally {
driver.close();
}
}
}
로그인이 돼야 하는데.. 보안문자를 입력하라니 ..
어쨋든 웹 조작은 이런식으로 ....ㅠㅠㅠㅠ
'프로그래밍 > 자바' 카테고리의 다른 글
자바 소켓 프로그래밍 - 동시 채팅프로그램 예제 (0) | 2019.03.22 |
---|---|
JavaFX :: Scene Builder 사용하기 (0) | 2019.03.15 |
JavaFX :: Scene Builder 설치 (0) | 2019.03.15 |
자바 Swing 메뉴 만들기 (0) | 2019.03.14 |
자바 Swing으로 GUI 만들기 (0) | 2019.03.11 |