原文 Python + Selenium 自動化測試《人生重開模擬器》
背景
最近有一款小游戲特別火,叫《人生重開模擬器》,這款游戲用黑色幽默的調侃形式,隨機生成你的人生大事件列表,開場還能抽取天賦加點,趣味性十足。
因為官網訪問流量過大,有的朋友出現訪問白屏、網頁失效的情況,小編在這里發一個最新的人生重開模擬器在線鏈接:
https://dushusir.com/life/
不停地重開自己的人生之后,小編想着能不能寫個腳本來自動化運行這款游戲,因為是純網頁操作,所以可以使用Python和Selenium組合的自動化測試神器來測試下。
思路
因為本質上這個游戲是一系列的網頁操作,所以實現起來比較簡單,就當是復習下Selenium的基本元素操作。想入門Python的童鞋可以看下,
以前小編寫過一個 Python+Selenium自動化測試合成大西瓜一樣可以作為學習。
注意:這不是一個智能的提高游戲分數的腳本,只是一個演示自動化測試學習案例,幫助大家更好的理解selenium的用法。
開發環境
- 下載Python並安裝
- 安裝pip
- 安裝Selenium和瀏覽器webdriver
mac平台和windows平台有所不同,安裝時注意下環境。細節問題這里就不列出了,大家多用戶谷歌。
如果下載Python或者pip安裝比較慢的,可以參考下這篇博文進行加速。
代碼
環境准備好之后,直接復制以下代碼到.py文件里,比如main.py,執行
python main.py
即可啟動webdriver運行自動化人生重開模擬器。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 谷歌瀏覽器驅動
from selenium import webdriver
# sleep模塊,讓程序停止往下運行
from time import sleep
# 導入 random(隨機數) 模塊
import random
# 手機模式加載谷歌瀏覽器
mobile_emulation = {'deviceName': 'iPhone 5'}
options = webdriver.ChromeOptions()
options.add_experimental_option("mobileEmulation", mobile_emulation)
driver = webdriver.Chrome(chrome_options=options)
# 設置瀏覽器大小
driver.set_window_rect(0,0,700,700)
sleep(1)
# 打開設定的網址
driver.get('https://dushusir.com/life')
# 隱式等待
driver.implicitly_wait(5)
# 點擊 立即重開
restart = driver.find_element_by_id('restart')
restart.click()
sleep(1)
# 點擊 10連抽
driver.find_element_by_id('random').click()
sleep(1)
# 隨機1-10數字,用於抽中天賦卡
randomOne = random.randint(1,3)
randomTwo = random.randint(4,6)
randomThree = random.randint(7,10)
# 找到三張天賦卡按鈕並點擊
driver.find_element_by_css_selector("#talents li:nth-of-type("+ str(randomOne) +")").click()
driver.find_element_by_css_selector("#talents li:nth-of-type("+ str(randomTwo) +")").click()
driver.find_element_by_css_selector("#talents li:nth-of-type("+ str(randomThree) +")").click()
# 點擊確認:“請選擇3個”
driver.find_element_by_css_selector("#next").click()
sleep(1)
# 點擊隨機分配
driver.find_element_by_css_selector("#random").click()
sleep(2)
# 開始新人生
driver.find_element_by_css_selector("#start").click()
# 持續點擊人生大事件列表區域,直到列表區域內容不再增加,即表明人生結束
isOver = False # 結束標識
life = 0 # 前一個life長度
while(not isOver):
# 點擊列出人生大事件
driver.find_element_by_css_selector("#lifeTrajectory").click()
print('點擊一次'+str(life))
sleep(1)
# 注意必須使用find_elements,不是find_element,否則len方法會報錯
li = driver.find_elements_by_css_selector("#lifeTrajectory li")
currt_life = len(li)
# 如果列表在繼續增加,則繼續點擊;一旦不再增加,表明你掛了
if currt_life > life:
life = currt_life
else:
isOver = True
print('結束')
# 點擊人生總結
driver.find_element_by_id('summary').click()
sleep(5)
driver.quit()
總結
程序寫的比較粗略,很多細節還沒有完善,不過可以作為小案例參考,也歡迎大家批評指出問題。后續有時間再分享更多有用的測試腳本和好玩的游戲。