로그인 자동화
package selenium;
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 {
public static void main(String[] args) {
SeleniumTest selTest = new SeleniumTest();
selTest.crawl();
}
//WebDriver
private WebDriver driver;
//Properties
public static final String WEB_DRIVER_ID = "webdriver.chrome.driver";
public static final String WEB_DRIVER_PATH = "C:/selenium/chromedriver.exe";
//크롤링 할 URL
private String base_url;
public SeleniumTest() {
super();
//System Property SetUp
System.setProperty(WEB_DRIVER_ID, WEB_DRIVER_PATH);
//Driver SetUp (드라이버 옵션 설정)
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized"); // 브라우저 최대 크기로 실행
options.addArguments("--disable-popup-blocking"); // 팝업 창 무시하기
driver = new ChromeDriver(options);
base_url = "https://www.naver.com//";
}
public void crawl() {
try {
driver.get(base_url); //get page (= 브라우저에서 url을 주소창에 넣은 후 request 한 것과 같다)
Thread.sleep(2000); //페이지 로딩 대기 시간
// 4. 로그인 버튼 클릭
WebElement element = driver.findElement(By.className("link_login"));
element.click();
Thread.sleep(1000);
// ID 입력
element = driver.findElement(By.id("id"));
element.sendKeys("아이디");
// 비밀번호 입력
element = driver.findElement(By.id("pw"));
element.sendKeys("비밀번호");
// 전송
element = driver.findElement(By.className("btn_login"));
element.submit();
} catch (Exception e) {
e.printStackTrace();
} finally {
//driver.close(); // 브라우저 종료
}
}
}
메서드
메서드 | 설명 |
driver.findElement() | 단일 요소 선택 |
driver.findElements() | 복수 요소 선택 |
By.className(" ") | 클래스 이름으로 element 찾기 |
By.id(" ") | 아이디로 element 찾기 |
By.cssSelector(" ") | css 선택자로 element 찾기 |
By.name(" ") | name으로 element 찾기 |
By.xpath(" ") | xpath로 element 찾기 |
By.linkText(" ") | 하이퍼 링크의 텍스트로 찾기 (완전 일치) |
By.partialLinkText(" ") | 하이퍼 링크의 텍스트로 찾기 (포함) |
By.tagName(" ") | 태그 이름으로 element 찾기 |
element.click() | 버튼 클릭 |
element.sendKeys(str) | 텍스트 입력 |
element.submit() | 서버로 전송 (제출) |
driver.manage().timeouts().implicitlyWait(시간, TimeUnit.SECONDS) | 탐색시 object가 없으면 대기하는 시간 |
driver.close() | 브라우저를 종료 |
driver.getAttribute("속성") | 속성 값 가져옴 |
ex)
driver.findElement(By.cssSelector("input[name='first_name']"));
선택자 경로 & xpath 값 찾기
개발자 모드 -> 태그 마우스 오른쪽 클릭 -> copy 메뉴 -> xpath와 css selector 경로 등 확인 가능
* 모든 사이트들은 접근에 대한 내용을 robot.txt라는 파일 안에 적어둔다. (사이트 주소 뒤에 /robot.txt를 붙이면 확인가능)
로봇의 접근을 허용하면 Allow, 허용하지 않으면 Disallow
<로봇 배제 표준 참조>
https://ko.wikipedia.org/wiki/%EB%A1%9C%EB%B4%87_%EB%B0%B0%EC%A0%9C_%ED%91%9C%EC%A4%80
참조
https://todaycode.tistory.com/5
https://devqa.io/selenium-css-selectors/
https://nowonbun.tistory.com/42
'1. 프로그래밍 > 1-2. Java' 카테고리의 다른 글
JAVA - [2진수,8진수,16진수 <-> 10진수] (0) | 2023.01.23 |
---|---|
Java - [ Selenium으로 크롤링 ] (0) | 2022.09.28 |
JAVA - [ 정규식 이용 특수문자 변환 (replaceAll) ] (0) | 2022.09.08 |
Java - [ 2차원 배열 정렬 ] (0) | 2022.07.29 |
Java - [ SHA-256 해시 암호화 알고리즘 ] (0) | 2022.07.05 |