Python + Selenium 自動化測試《人生重開模擬器》


原文 Python + Selenium 自動化測試《人生重開模擬器》

背景

最近有一款小游戲特別火,叫《人生重開模擬器》,這款游戲用黑色幽默的調侃形式,隨機生成你的人生大事件列表,開場還能抽取天賦加點,趣味性十足。

因為官網訪問流量過大,有的朋友出現訪問白屏、網頁失效的情況,小編在這里發一個最新的人生重開模擬器在線鏈接:

https://dushusir.com/life/

不停地重開自己的人生之后,小編想着能不能寫個腳本來自動化運行這款游戲,因為是純網頁操作,所以可以使用Python和Selenium組合的自動化測試神器來測試下。

思路

因為本質上這個游戲是一系列的網頁操作,所以實現起來比較簡單,就當是復習下Selenium的基本元素操作。想入門Python的童鞋可以看下,

以前小編寫過一個 Python+Selenium自動化測試合成大西瓜一樣可以作為學習。

注意:這不是一個智能的提高游戲分數的腳本,只是一個演示自動化測試學習案例,幫助大家更好的理解selenium的用法。

開發環境

  1. 下載Python並安裝
  2. 安裝pip
  3. 安裝Selenium和瀏覽器webdriver

mac平台和windows平台有所不同,安裝時注意下環境。細節問題這里就不列出了,大家多用戶谷歌。

如果下載Python或者pip安裝比較慢的,可以參考下這篇博文進行加速。

安裝py模塊神器

代碼

環境准備好之后,直接復制以下代碼到.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()

總結

程序寫的比較粗略,很多細節還沒有完善,不過可以作為小案例參考,也歡迎大家批評指出問題。后續有時間再分享更多有用的測試腳本和好玩的游戲。

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM