IT/Programing

[Python] twill 모듈 설치 및 사용법 소개

착한아줌마 2018. 3. 23. 13:37
반응형

 

 

 twill 모듈은 Web에서의 핸들링을 위해 찾은 모듈

 

 Web상의 일종의 매크로 동작을 위해 사용하였다

 


 

 

 

 1. 설치 

 

   1) 아래 URL로 접속하여 twill을 다운로드 한다

 http://twill.idyll.org/

다운로드 파일: twill-0.9.tar.gz

 

 2) 다운로드한 파일 압축을 풀고 내부에서 setup.py를 install한다

install방법은 아래 명령어를 사용

# python setup.py install

 

 


 

 

2. 사용법

 

- 기본적인 API에 대한 설명은 아래 주소로 들어가면 있다

http://twill.idyll.org/python-api.html

 

1) python에서 twill 모듈 사용

 아래와 같이 스크립트에 twill.commands를 import해주면 객체없이 명령어만으로 사용 가능하다

 

2) 페이지로 이동

로그인하는 폼이 있는 임의의 페이지에 로그인을 해본다

go() 함수를 사용하여 접속할 페이지 url을 매개변수로 넣어주면 된다.

아래와 같이 쓰고 url은 '(작은따옴표)로 묶어주면 된다.

 

go(<url>)

 

 

3) 페이지 from 확인

로그인을 하려면 id와 password를 입력해야하는데 해당 변수? 값을 알아야한다

showforms() 함수를 사용하면 각각의 form태그에 속한 요소들의 name, type, id, value 값을 확인 할 수 있다

 

아래와 같이 간단한 코드로 확인 가능하다

접속할 IP는 따로 명령어에 같이 입력하하도록 하였다

 

 

 

# python test.py [IP]

 

위에서 확인할 수 있는 내용을 정리하면

 

Form name=form (#1)

-> form은 form이라는 이름으로 1개 존재

 

form에 요소는 4개로

ref, input_id, input_pw, None

이다

 

input_id와 input_pw가 내가 원하던 요소인 것을 확인하였다

 

4) id, password 입력하여 로그인하기

ip,password를 입력할 요소를 찾았으니 값을 넣어주면 된다

 

fromvalue() 함수를 사용할 수 있다

 

첫번째 인자는 앞에서 확인한 form번호(#1)

두번째 인자는 요소 이름

세번째 인자는 요소에 넣을 값

 

 

id, password를 미리 변수로 만들어두고 사용하였다

 

그러나 이 상태로 스크립트를 돌리면 이전에 폼내용 출력되는 화면 밖에 나오지 않는다

 로그인 성공했는지 확인이 안되기 때문에

페이지 자체를 봄으로써 구분하는 방법을 사용한다

 

 

위와 같이 새롭게 web_show()를 디파인하여

go() 함수 페이지에 접근하고

show() 함수를 사용하여 페이지 자체를 보게하였다

 

# python test.py [IP]

 

정상적으로 로그인이 성공하면 main페이지가 뜬다

위 그림에서 @@Web show@@ 아래 접속된 url에서 main페이지 임을 알 수 있다.

 

 

 

기존 코드에서 로그인하는 web_login() 함수 부분없이 

web_show() 함수만 사용하여 접속시도하면

로그인에 실패하였기 때문에 로그인 페이지로 다시 접속 된다.

 

 

 

 

 


 

 

3. 참조

 

http://twill.idyll.org/python-api.html

http://twill.idyll.org/commands.html

https://blog.naver.com/bonwho09/80195776135

 

 

 

 

 

 

 

 

'IT > Programing' 카테고리의 다른 글

[Python] 개행문자 삭제  (0) 2018.08.08
[Python] Python 2.4에서 2.7 설치  (0) 2018.05.30
vi(vim) 편집기  (0) 2018.01.20
[Python] 리눅스 Python3 설치  (0) 2017.09.25
[운영체제] 프로그램의 구조  (0) 2017.07.20