지식메모/Python
-
GUI를 구성하여 파이썬으로 네이버 자동 로그인 만들기2018.08.23
-
Qt designer로 생성한 .ui 파일 파이썬 .py로 변환2018.08.17
-
파이썬에서 selenium으로 네이버 로그인 자동화하기2018.08.08
-
파이썬과 자바 selenium 사용법 간단한 기능 비교 및 xpath 사용법2018.08.08
-
파이썬에서 selenium을 이용하여 크롬 브라우저 띄우기2018.08.07
Qt designer 로그인 GUI 에서 암호 입력시 암호 가리기
https://yonoo88.tistory.com/1210
위 링크에서 만들었던 로그인 창은 암호 입력시 암호가 가려지지 않는다.
암호를 가리기 위해서는 다음 코드가 필요하다.
self.lineEdit_PW.setEchoMode(QtWidgets.QLineEdit.Password)
이 코드를 암호 입력 코드에 추가해준다.
아니면 코드를 추가하지 않고 Qt designer 에서 GUI 를 구성할 때 속성을 변경해주면 자동으로 코드가 추가되어 있다.
echoMode를 password로 변경해주면 다음과 같이 암호가 가려진다.
'지식메모 > Python' 카테고리의 다른 글
GUI를 구성하여 파이썬으로 네이버 자동 로그인 만들기 (0) | 2018.08.23 |
---|---|
Qt designer로 생성한 .ui 파일 파이썬 .py로 변환 (0) | 2018.08.17 |
python 3.7.0 에서 pyside2를 설치하여 Qt Designer 설치하기 (2) | 2018.08.14 |
파이썬에서 selenium으로 네이버 로그인 자동화하기 (0) | 2018.08.08 |
파이썬과 자바 selenium 사용법 간단한 기능 비교 및 xpath 사용법 (0) | 2018.08.08 |
GUI를 구성하여 파이썬으로 네이버 자동 로그인 만들기
GUI 구성하기
Qt designer로 생성한 .ui 파일 파이썬 .py로 변환
http://yonoo88.tistory.com/1209
GUI 구성상태
기능 : ID와 PW 입력 후 시작버튼을 누름 > 동작 완료 후 listWidget에 로그인 성공 표시
아래 코드를 보면 UI 객체 명 별로 코드가 구성되어 있다
핵심은 시작 버튼에 이벤트 처리를 해주는 것. 시작 버튼 객체명은 startButton 이다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | from PyQt5 import QtCore, QtGui, QtWidgets from selenium import webdriver import time class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(180, 234) self.listWidget = QtWidgets.QListWidget(Dialog) self.listWidget.setGeometry(QtCore.QRect(20, 160, 141, 61)) self.listWidget.setObjectName("textBrowser") self.label = QtWidgets.QLabel(Dialog) self.label.setGeometry(QtCore.QRect(80, 10, 16, 16)) self.label.setObjectName("label") self.label_2 = QtWidgets.QLabel(Dialog) self.label_2.setGeometry(QtCore.QRect(80, 70, 21, 16)) self.label_2.setObjectName("label_2") self.startButton = QtWidgets.QPushButton(Dialog) self.startButton.setGeometry(QtCore.QRect(50, 130, 75, 23)) self.startButton.setObjectName("startButton") self.lineEdit_ID = QtWidgets.QLineEdit(Dialog) self.lineEdit_ID.setGeometry(QtCore.QRect(30, 30, 113, 20)) self.lineEdit_ID.setObjectName("lineEdit_ID") self.lineEdit_PW = QtWidgets.QLineEdit(Dialog) self.lineEdit_PW.setGeometry(QtCore.QRect(30, 90, 113, 20)) self.lineEdit_PW.setObjectName("lineEdit_PW") self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) #startButton 클릭시 autoExcute 함수 수행 self.startButton.clicked.connect(self.autoExcute) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Naver Login")) self.label.setText(_translate("Dialog", "ID")) self.label_2.setText(_translate("Dialog", "PW")) self.startButton.setText(_translate("Dialog", "시작")) #셀레니움 동작 코드 함수 autoExcute 생성 def autoExcute(self): driver = webdriver.Chrome('C://chromedriver.exe') driver.implicitly_wait(3) driver.get('http://www.naver.com') driver.maximize_window() id = self.lineEdit_ID.text() pw = self.lineEdit_PW.text() driver.find_element_by_class_name('lg_local_btn').click() driver.find_element_by_id('id').send_keys(id) driver.find_element_by_id('pw').send_keys(pw) driver.find_element_by_class_name('btn_global').click() time.sleep(3) driver.close() #listWidget에 로그인 성공 표시 self.listWidget.addItem('로그인 성공') # self.addItem() if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Dialog = QtWidgets.QDialog() ui = Ui_Dialog() ui.setupUi(Dialog) Dialog.show() sys.exit(app.exec_()) |
코드를 실행시킨 후 아이디와 암호 입력 > 시작을 누르면 로그인 자동화가 진행되고 끝나면 로그인 성공 텍스트가 나타난다
'지식메모 > Python' 카테고리의 다른 글
Qt designer 로그인 GUI 에서 암호 입력시 암호 가리기 (2) | 2018.10.22 |
---|---|
Qt designer로 생성한 .ui 파일 파이썬 .py로 변환 (0) | 2018.08.17 |
python 3.7.0 에서 pyside2를 설치하여 Qt Designer 설치하기 (2) | 2018.08.14 |
파이썬에서 selenium으로 네이버 로그인 자동화하기 (0) | 2018.08.08 |
파이썬과 자바 selenium 사용법 간단한 기능 비교 및 xpath 사용법 (0) | 2018.08.08 |
Qt designer로 생성한 .ui 파일 파이썬 .py로 변환
아래와 같은 ui를 만든 후 naver.ui로 저장
UI 구조 - 각 클래스와 객체명
naver.ui 를 열어보면 xml형태로 작성되어 있음
이 파일을 파이썬 .py 파일로 변환하기
파일있는 폴더경로로 이동해서 cmd 창에서 pyuic5 -x naver.ui -o naver.py 실행
그럼 naver.py 생성
naver.py를 열어보면
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'naver.ui' # # Created by: PyQt5 UI code generator 5.11.2 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(158, 234) self.textBrowser = QtWidgets.QListWidget(Dialog) self.textBrowser.setGeometry(QtCore.QRect(10, 160, 141, 61)) self.textBrowser.setObjectName("textBrowser") self.label = QtWidgets.QLabel(Dialog) self.label.setGeometry(QtCore.QRect(70, 10, 16, 16)) self.label.setObjectName("label") self.label_2 = QtWidgets.QLabel(Dialog) self.label_2.setGeometry(QtCore.QRect(70, 70, 21, 16)) self.label_2.setObjectName("label_2") self.pushButton = QtWidgets.QPushButton(Dialog) self.pushButton.setGeometry(QtCore.QRect(40, 130, 75, 23)) self.pushButton.setObjectName("pushButton") self.lineEdit_ID= QtWidgets.QLineEdit(Dialog) self.lineEdit_ID.setGeometry(QtCore.QRect(20, 30, 113, 20)) self.lineEdit_ID.setObjectName("lineEdit") self.lineEdit_PW= QtWidgets.QLineEdit(Dialog) self.lineEdit_PW.setGeometry(QtCore.QRect(20, 90, 113, 20)) self.lineEdit_PW.setObjectName("lineEdit_2") self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.label.setText(_translate("Dialog", "ID")) self.label_2.setText(_translate("Dialog", "PW")) self.pushButton.setText(_translate("Dialog", "시작")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Dialog = QtWidgets.QDialog() ui = Ui_Dialog() ui.setupUi(Dialog) Dialog.show() sys.exit(app.exec_()) | cs |
위와 같이 자동으로 코드로 변환되어 있음. 이 코드 안에서 이벤트를 연결하여 기능을 구현할 수 있음
'지식메모 > Python' 카테고리의 다른 글
Qt designer 로그인 GUI 에서 암호 입력시 암호 가리기 (2) | 2018.10.22 |
---|---|
GUI를 구성하여 파이썬으로 네이버 자동 로그인 만들기 (0) | 2018.08.23 |
python 3.7.0 에서 pyside2를 설치하여 Qt Designer 설치하기 (2) | 2018.08.14 |
파이썬에서 selenium으로 네이버 로그인 자동화하기 (0) | 2018.08.08 |
파이썬과 자바 selenium 사용법 간단한 기능 비교 및 xpath 사용법 (0) | 2018.08.08 |
python 3.7.0 에서 pyside2를 설치하여 Qt Designer 설치하기
파이썬에서 윈도우 프로그램을 만들고자 GUI 를 구성해야 했는데 찾아보니 대부분 Qt designer를 사용하고 있었다.
C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\Lib\site-packages
그래서 나도 설치를 해보려고 했는데 설치가 안된다. 파일도 내려받아 설치시도를 해보았지만 아래와 같은 메시지만 나온다.
Collecting pyqt5-tools
Could not find a version that satisfies the requirement pyqt5-tools (from versions: )
No matching distribution found for pyqt5-tools
pyqt5_tools-5.7.dev10-cp35-none-win_amd64.whl is not a supported wheel on this platform.
버전이 지원하지 않는단다. 수소문 해보니 파이썬 최신 버전에서는 지원이 안된다고 한다.
파이썬 3.5? 버전까지만 되는 것 같았다. 하지만 이미 설치한 버전은 3.7.0 버전..
왜 최신 버전은 지원하지 않는 것인가? 방법이 있을 것 같아 검색해보니 pyside2 를 설치하면 Qt designer가 설치된다고 한다.
해당 링크
https://doc-snapshots.qt.io/qtforpython/gettingstarted.html
cmd에서 다음을 설치한다
python -m pip install --index-url=http://download.qt.io/snapshots/ci/pyside/5.11/latest pyside2 --trusted-host download.qt.io
명령어가 안 먹힌다면 파일을 다운로드 받아서 직접 설치를 시도해볼 수 있다.
파일링크 http://download.qt.io/snapshots/ci/pyside/5.11/latest/pyside2/
환경변수에 파이썬이 추가되었다면 pip install 부터 쳐도 상관없다. 그럼 설치가 진행된다.
설치가 끝나면 파이썬이 설치된 다음 경로로 이동한다.
C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\PySide2
그럼 designer.exe 파일을 볼 수 있다
구 버전이었다면 C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\Lib\site-packages 요 경로에 designer.exe 가 존재할 것이다.
하지만 파이썬 3.7.0 버전에서는 pyside2 를 설치해야 qt designer를 설치할 수 있는 것으로 보인다
파일을 실행하면 qt designer가 실행된다.
'지식메모 > Python' 카테고리의 다른 글
GUI를 구성하여 파이썬으로 네이버 자동 로그인 만들기 (0) | 2018.08.23 |
---|---|
Qt designer로 생성한 .ui 파일 파이썬 .py로 변환 (0) | 2018.08.17 |
파이썬에서 selenium으로 네이버 로그인 자동화하기 (0) | 2018.08.08 |
파이썬과 자바 selenium 사용법 간단한 기능 비교 및 xpath 사용법 (0) | 2018.08.08 |
파이썬 TabError: inconsistent use of tabs and spaces in indentation 에러 해결 (Atom 에디터 옵션 설정) (0) | 2018.08.08 |
파이썬에서 selenium으로 네이버 로그인 자동화하기
사전 작업은 링크 참고
파이썬에서 selenium을 이용하여 크롬 브라우저 띄우기
http://yonoo88.tistory.com/1200
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from selenium import webdriver import time driver = webdriver.Chrome('C://chromedriver.exe') driver.implicitly_wait(3) driver.get('http://www.naver.com') driver.maximize_window() driver.find_element_by_class_name('lg_local_btn').click() driver.find_element_by_id('id').send_keys('아이디') driver.find_element_by_id('pw').send_keys('비번') driver.find_element_by_class_name('btn_global').click() time.sleep(3) driver.close() | cs |
'지식메모 > Python' 카테고리의 다른 글
Qt designer로 생성한 .ui 파일 파이썬 .py로 변환 (0) | 2018.08.17 |
---|---|
python 3.7.0 에서 pyside2를 설치하여 Qt Designer 설치하기 (2) | 2018.08.14 |
파이썬과 자바 selenium 사용법 간단한 기능 비교 및 xpath 사용법 (0) | 2018.08.08 |
파이썬 TabError: inconsistent use of tabs and spaces in indentation 에러 해결 (Atom 에디터 옵션 설정) (0) | 2018.08.08 |
파이썬에서 selenium을 이용하여 크롬 브라우저 띄우기 (0) | 2018.08.07 |
파이썬과 자바 selenium 사용법 간단한 기능 비교 및 xpath 사용법
JAVA
driver.manage().window().maximize(); //브라우저 확장
Python
driver.maximize_window()
JAVA
Thread.sleep(500); //단위 ms
Python
import time #(import 필요)
time.sleep(0.5) # 단위 s
JAVA
Alert alert = driver.switchTo().alert(); //얼럿 창으로 스위칭
Python
alert = driver.switch_to_alert()
JAVA
alertText = alert.getText(); //얼럿 창 메시지 추출
Python
alertText = alert.text
JAVA
driver.find_element_by_id('user_id').sendKeys('id'); //id 요소 찾기와 입력값 채우기
Python
driver.find_element_by_id('user_id').send_keys('id')
JAVA
driver.quit();
Python
driver.close()
Python
driver.find_element_by_xpath('//*[@id="content"]/div/div[3]/button[2]').click() //xpath 클릭
표 출처 : https://wkdtjsgur100.github.io/selenium-xpath/
'지식메모 > Python' 카테고리의 다른 글
python 3.7.0 에서 pyside2를 설치하여 Qt Designer 설치하기 (2) | 2018.08.14 |
---|---|
파이썬에서 selenium으로 네이버 로그인 자동화하기 (0) | 2018.08.08 |
파이썬 TabError: inconsistent use of tabs and spaces in indentation 에러 해결 (Atom 에디터 옵션 설정) (0) | 2018.08.08 |
파이썬에서 selenium을 이용하여 크롬 브라우저 띄우기 (0) | 2018.08.07 |
android calabash apk is not signed with any of the available keystores 문제 해결을 위한 apk resign 하기 (0) | 2015.05.29 |
파이썬 TabError: inconsistent use of tabs and spaces in indentation 에러 해결 (Atom 에디터 옵션 설정)
File "C:\Users\NTS\Desktop\python\automation.py", line 19
driver.find_element_by_id('setPwd').click()
^
TabError: inconsistent use of tabs and spaces in indentation
이러한 에러가 발생
검색해보니 들여쓰기 문제라고 한다.
겉으로 보기엔 아무 문제 없어 보이는 19번 라인
들여쓰기를 다시하기 위해 Shift + Tab 으로 해당 라인을 왼쪽 끝까지 붙여놓은 뒤 다시 탭을 눌러 알맞은 들여쓰기로 수정한다.
그리고 다시 실행하면 해결.
코드 복붙으로 자주 발생하는 현상으로 너무 많은 탭을 수정해야할 때는 사용 중인 에디터마다 일괄 수정 방법이 있으니 찾아보는게 좋다.
참고로 Atom 에디터에서 스페이스와 탭을 표시 하려면
Package > Settings View > Show keybindings 에서 Editor 탭 아래로 내려가면
Show Indent Guide
Show Invisible
요 2개를 체크해준다. 이걸 해주게 되면
점으로 스페이스가 표현되고 4칸마다 선이 표시된다.
줄바꿈도 표시된다
'지식메모 > Python' 카테고리의 다른 글
파이썬에서 selenium으로 네이버 로그인 자동화하기 (0) | 2018.08.08 |
---|---|
파이썬과 자바 selenium 사용법 간단한 기능 비교 및 xpath 사용법 (0) | 2018.08.08 |
파이썬에서 selenium을 이용하여 크롬 브라우저 띄우기 (0) | 2018.08.07 |
android calabash apk is not signed with any of the available keystores 문제 해결을 위한 apk resign 하기 (0) | 2015.05.29 |
이클립스에서 Ruby 플러그인 추가하기 (2) | 2015.05.19 |
파이썬에서 selenium을 이용하여 크롬 브라우저 띄우기
사전 작업이 필요(환경변수에 파이썬도 추가되어있는 상태)
크롬드라이버 내려받기
https://sites.google.com/a/chromium.org/chromedriver/downloads
경로는 편한 곳으로 내려받기
멋 모르고 파일명을 selenium으로 해놨다가 삽질함
from selenium import webdriver driver = webdriver.Chrome('C://chromedriver.exe') driver.implicitly_wait(3) driver.get('http://www.naver.com')
위 코드를 작성하고 파이썬 실행
'지식메모 > Python' 카테고리의 다른 글
파이썬과 자바 selenium 사용법 간단한 기능 비교 및 xpath 사용법 (0) | 2018.08.08 |
---|---|
파이썬 TabError: inconsistent use of tabs and spaces in indentation 에러 해결 (Atom 에디터 옵션 설정) (0) | 2018.08.08 |
android calabash apk is not signed with any of the available keystores 문제 해결을 위한 apk resign 하기 (0) | 2015.05.29 |
이클립스에서 Ruby 플러그인 추가하기 (2) | 2015.05.19 |
윈도우 7 Ruby 설치하기 & Android calabash 설치 후 apk 실행하기 (0) | 2015.05.15 |