from selenium import webdriver driver = webdriver.Chrome('C:/Users/Administrator/Downloads/chromedriver') driver.implicitly_wait(3) driver.get("http://naver.com") driver.execute_script("window.alert('하이!! selenimu!!')") 앞에서는 Phantomjs를 사용했다면, 지금은 chromeDriver를 사용했습니다. 사용 결과 화면에 보이는 것처럼 naver가 자동으로 실행되면서 팝업창이 실행되는 모습을 살펴 볼 수 있습니다.
앞에서 설명한 셀레니움이 제대로 설치 되었다면 아래와 같은 작업을 진행 할 수 있게 된다. from selenium import webdriver url = "http://www.naver.com/" #PhantomJS 드라이버 추출 driver = webdriver.PhantomJS('C:/Program Files/phantomjs/phantomjs-2.1.1-windows/bin/phantomjs') driver.implicitly_wait(3) #드라이버를 초기화 될 때까지 3초간 대기 driver.get(url) driver.save_screenshot("naver.png") driver.quit() 다음과 같은 코드에서 driver 설치 경로는 아래의 설치 경로와 동일하다. Phantomjs를 ..
Selenium 가장 원초적인 자동화는 화면의 좌표를 기준으로 한 자동화 Selenium 도구를 이용하는 웹 자동화 윈도우즈의 자동화 작업의 자동화 웹드라이버 구성 WebDriver.Firefox : 파이어폭스 WebDriver.Chrom : 크롬 WebDriver.ie : 익스플로어 WebDriver.Opera : 오페라 WebDriver.PhantomJS : PhantomJS 브라우저 Selenium Client 설치 pip install selenium Firefox 드리아버 설치 https://github.com/mozilla/geckodriver/releases 크롬 드라이버 설치 https://sites.google.com/a/chromium.org/chromedriver/downloads D..
HTTP프로토콜은 비접속형 프로토콜이기에, 매 접속시마다 새로운 네트워크 연결이Connectionless : 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 response를 보냅니다.다. 그리고 접속을 끊는 특성이 있습니다. Stateless : 접속을 끊는 순간 클라이언트와 서버의 통신은 끝나고 상태정보는 유지하지 않는 특성이 있습니다. 쿠키 (Cookie) 쿠키는 클라이언트에 저장되는 키와 값이 들어있는 작은 데이터 파일입니다. 쿠키는 이름, 값 , 만료날짜(쿠키의 저장기간), 경로정보가 들어있습니다. 쿠키는 일정시간동안 데이터를 저장할 수 있어서 로그인 상태를 유지합니다. 쿠키는 클라이언트의 상대정보를 유저의 하드 디스크에 저장하였다가 필요할 때 참조, 재 상용합니다. 쿠키의 사..
웹에서는 두 가지의 대표적인 전송 방식이 있습니다. get방식과 post 방식입니다. import requests # http에서 사용하는 데이터 전송방식 Get, POST 방식이 있는데, 두 방식의 메소 r = requests.get("http://google.com") #get방식의 요청을 하는 경우 #POST 요청 formData = {"key1":"value1", "key2":"value2"} r = requests.post("http://sample.com", data=formData) get 방식과 포스트 방식은 이렇게 작성이 됩니다. get 방식 호출하기 #텍스트 데이터 가져오기 import requests resData = requests.get("http://api.aoikujira.co..
절대경로 : 전체 경로 상대경로 : 특정 위치를 기준으로 경로 절대경로와 상대경로의 구분은 편의성으로 구분됩니다. 현재 위치를 기준으로 도착지점의 위치의 구분과 시작위치의 기준으로 도착위치의 구분은 결과는 동일하게 표현할 수 있지만 절대경로, 상대경로 사용하는 입장에서는 편의성의 차이가 있습니다. 상대경로는 나의 프로젝트를 어디서든 인식시켜도 작동되는 장점이 있지만, 파일마다 경로가 다르므로 경로를 찾는데 힘들 수도 있습니다. 절대경로는 파일의 경로를 찾기란 매우 쉽지만, 나의 프로젝트를 어느 피시에서도 인식 시킬 때 장애를 일으킬 수 있습니다. 그러나 이런 차이점을 멀리하고 상대경로를 절대경로를 바꿔주는 방식입니다. 상대경로 => 절대경로 변경하기 urllib.parse.urljoin() from ur..
게시판 정렬할 때 가장 유심히 봐야 하는 컬럼은 BID(Primary Key) 입니다. 제가 만든 MVC_BOARD에서 유일하게 UNIQUE 속성을 지니고 있습니다. 게시판은 단순한 표 형태로 표시되어서 테이블로 표현하지만, 답글 기능이 있는 테이블은 계층형 구조 (트리 구조)에 가깝습니다. MVC_BOARD 테이블의 컬럼 역할 더보기 CREATE TABLE MVC_BOARD( BID NUMBER(4) PRIMARY KEY, -- 게시판 Primary Key BNAME VARCHAR2(20), -- 작성자 BTITLE VARCHAR2(100), -- 글제목 BCONTENT VARCHAR2(300), -- 글 내용 BDATE DATE DEFAULT SYSDATE, -- 등록일자 BHIT NUMBER(4) ..
저번 과정하고 동일합니다. 이번에는 버튼에 대해 다른 추가적인 기능에 대해 적어놓았습니다. #페이지 이동하기 public void onNaver(View v) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://m.naver.com")); startActivity(intent); } m.naver.com을 지정을 했습니다. 버튼을 누르게 되면 사이트이동이 되는 것을 확인 할 수 있습니다. #전화 걸기 public void onButt(View v) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("tel:010-1234-1111")); startActivity(intent); } ..
작업 화면의 좌측 상단에 만들고자 하는 Button을 끌고 화면으로 옮깁니다. 버튼이 생성과 동시에 '버튼이 눌린 상태'에서의 우측 속성에서 자세히 보시면 text 박스가 있습니다. 이를 통해서 text의 이름을 수정 합니다. 함수를 만들어 봅니다. JavaScript 혹은 메소드에 능숙하다면 친숙한 단어 입니다. onClick, 버튼을 눌렀을 때 발생하는 이벤트처리 곧 메소드입니다. 버전마다 다르겠지만 제 버전 같은 경우에는 함수가 없으므로 빨간색 테두리가 나왔습니다. 그러므로 Java영역에다가 똑같이 함수명을 적어 놓습니다. 아직 아무것도 없지만 다시 되돌아가서 확인해보면 빨간색 테두리가 사라져 있음을 확인 할 수 있습니다. 이 테두리는 바로 사라지지는 않고, 외부를 아무거나 클릭후 다시 해당 버튼을..
사용 화면에 대한 설명을 간단하게 가지도록 하겠습니다. 빨간색 1 : Java 영역입니다. 이벤트처리 진행 및 각 연결부분을 담당합니다. 빨간색 2 : XML 영역입니다. 실행이 될 때 육안으로 보이는 인터페이스 입니다. 파란색 1 : 최상위 레이아웃 입니다. 작업하는 공간의 최상위 레이아웃입니다. 초록색 1 : 사물간의 자동으로 맞춰주는 기능입니다. (가이드 선) ON / OFF로 사용 할 수 있습니다.
1. 좌측 상단 위의 File을 눌러서 Settings을 띄웁니다. 2. Editor을 클릭 후, Font를 누릅니다. 3. 원하는 Font를 수정한 후, OK 누릅니다. 안드로이드 스튜디오에서의 간단하게 폰트 바꾸는 방법 입니다. 추가적으로 Editor - General - Auto Import에 들어가보시면, 체크 박스 두개가 놓여 있습니다. 이는 Java의 특성상 Import의 필요가 생깁니다. 이 Import를 자동으로 생성해 주는 옵션이라고 생각하시면 됩니다.
정상적으로 진행이 된다면 화면과 같이 나오게 됩니다. 각 좌, 우, 아래, 센터가 기본이 됩니다. 좌측은 프로젝트에 대한 설정. 우측은 작업환경에 대한 설정입니다. 아래쪽은 작업 진행 상황에 대한 설명이고 가운데는 우리가 작업하는 영역입니다. 작업 환경이 마음에 안 든다면, 빨간 네모 박스 안의 영역의 파란 버튼을 누르시면 됩니다. 애뮬레이터 실행 설정하기 애뮬레이터 설정은 우측 상단에 네모란 박스 영역이 있습니다. AMDManager입니다. 클릭하게 되면, 현재 기본 설정밖에 없는데, 새로운 팝업창의 좌측 하단에 보시면 추가하기 버튼이 있습니다. 사용할 제품, 옵션에 대해 설정을 먼저 진행합니다. 저 또한 처음 과정이기 때문에 인강처럼 Pixel 2로 진행했습니다. 수많은 버전이 있지만, 이 또한 인강..
전에는 jsp로 값을 넘겼다면, 이번 시간에는 jsp로부터 값을 받는 경우에 대해 설명하겠습니다. 예를 들면 회원가입을 하였을 때, 입력 값을 Spring에게 건넸을 때 받는 방식 입니다. 여러가지의 방식이 있으며, 이에 대해서는 상황에 따라 선택해서 사용하시면 되겠습니다. 첫 번째 방법 @RequestMapping("/sendTest") public String sendTest(Model model, HttpServletRequest request) { String id = request.getParameter("id"); String pw = request.getParameter("pw"); model.addAttribute("identify", id); model.addAttribute("passw..
앞에서 XML을 통해서 Controller가 인식되는 것을 확인하였습니다. 이번시간에는 JSP(View)에게 값을 넘기는 것에 대해 설명하겠습니다. 여기서 주목해야 할 것은 Model 이라는 객체입니다. Model은 JSP에서 request값과 비슷하며 JSP에서 request.setAttribute("키값", 결과 값)을 입력했다면 Spring에서는 model.Attribute("키값", 결과 값)을 입력하게 됩니다. 이제 여기서 두 가지 방법에 대해 이야기 하겠습니다. 첫 번째 방법 입니다. @RequestMapping("/replay") public String replay(Model model) { model.addAttribute("id", 30); return "list/replay"; } m..
1. 프로젝트 생성 NEW - ORTHER 2. Spring Legacy Project 생성 3. Project명 생성, Spring MVC Project 선택 4. 필수적으로 3개의 경로를 통해 도달하도록 설정 (kr.co.spring , com.co.spring 등) 4. MVC가 정상적으로 만들어졌는지 확인한다. Controller 위치와 src 안의 view 위치를 파악해둔다. Spring MVC 구조도 Client를 통해 DispatcherServlet으로 가는 것을 확인한다. DispatcherServlet이 모든 것을 관리, 실행하므로 매우 중요함을 알 수 있다. Client 의 위치에 속한다. jsp를 실행하게 되면 가장 먼저 실행하는 경로, 위치에 속한다. 그래서 들어가보면 자동으로 만들..