이용한 게임 사이트
http://zzzscore.com/1to50/
1. 사전 준비
1) selenium이란?
- selenium은 웹 브라우저를 조작해 주는 프레임워크로 자동화 테스트를 위한 여러가지 기능을 제공함
- 원하는 브라우저를 조작해주는 webdriver을 이용해 서버처럼 구동해 명령을 수행한다
2) selenium 설치
- cmd에서 파이썬이 있는 위치로 이동해 아래와 같은 명령어 입력
pip install selenium
3) 크롬 드라이버 설치
(1) 자신의 크롬 버전을 확인한다
(2) 자신의 버전에 맞는 크롬 드라이버 설치하기
- sites.google.com/a/chromium.org/chromedriver/downloads
- 자신에게 맞는 버전을 선택한다
- 자신에게 맞는 환경을 선택한다
4) 모듈 가져오기
from selenium import webdriver
위와 같이 진행하면 사전 준비가 모두 끝난다.
2. 게임 매크로 만들기
- 게임에 접속 후 1~50까지 알아서 순서대로 클릭하는 매크로 만들기
from selenium import webdriver
driver = webdriver.Chrome('D:\Program\exe\chromedriver') # chrome으로 열기
driver.get('http://zzzscore.com/1to50/') # URL을 통해 게임 사이트 열기
- 크롬을 이용해 게임 사이트 열기
- selenium을 이용했을 때 태그를 이용할 수도 있지만 xpath를 이용해 사용할 수 있다
- 클릭하기를 원하는 코드의 xpath를 복사해 사용한다
왼쪽과 같이 알고 싶은 경로에서 copy에 있는 copy XPath를 통해
xpath를 복사할 수 있음
- 위에서부터 오른쪽으로 순서대로 xpath는 //*[@id="grid"]/div[N]/span으로 N에는 1~15가 들어간다.
그리고 해당 숫자가 클릭되면 25보다 큰 숫자 중 랜덤으로 바뀐다.
count = 1
while count <= 50:
i = 1 #
while i <= 25:
number = driver.find_element_by_xpath('//*[@id="grid"]/div[' + str(i) + ']')
i = i + 1
if str(count) == number.text:
number.click()
print("number " + str(count) + " clicked!")
count = count + 1
break
- 위 코드를 살펴보도록 하겠다
- 외부 반복문은 count가 50보다 커지기 전까지 반복하고 내부 반복문은 i가 25보다 커지기 전까지 반복한다
- count가 1일 때 xpath를 이용해 각각의 text가 뭐가 들어있는지 확인하고 1이면 .click()을 통해 클릭하고 count에 +1을 한 뒤 이를 계속 반복한다. 그러면 1~50까지 순서대로 클릭하여 게임을 끝낼 수 있다.
문제점
- 이 방법으로 명령만으로 게임을 끝낼 수 있다
- 그런데 생각보다 느림
3. 게임 매크로 수정
- 크롬에서 해당 xpath를 비교할 때마다 가져오는 방법이 아닌 현재 1~25번에 대한 주소를 모두 가져와 비교를 하도록 함
count = 1
while count <= 50:
number = driver.find_elements_by_xpath('//*[@id="grid"]/div[*]')
for num in number:
if num.text == str(count):
num.click()
print("number " + str(count) + " clicked!")
count += 1
break
- 원래는 //*//*[@id="grid"]/div[N]을 통해 N자리에 비교하고 싶은 번호를 넣었지만 숫자대신 *을 넣어 1~25번에 해당하는 경로를 모두 가져와 저장해 count와 비교한다. 나머지 코드는 위와 같다
'Study > Python' 카테고리의 다른 글
Python을 이용한 Web Crawling (0) | 2020.05.28 |
---|---|
[Python] 문자열과 리스트 함수 문법 (0) | 2020.04.12 |
댓글