原文 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_lifeelse:isOver = Trueprint('结束')# 点击人生总结
driver.find_element_by_id('summary').click()sleep(5)
driver.quit()

总结

程序写的比较粗略,很多细节还没有完善,不过可以作为小案例参考,也欢迎大家批评指出问题。后续有时间再分享更多有用的测试脚本和好玩的游戏。

参考

  • 《人生重开模拟器》打不开?最新链接!
  • Python+Selenium自动化测试合成大西瓜
  • 如何安装pip | win10/python3
  • Selenium+Python自动化测试(一)
  • Python + Selenium 自动化测试《人生重开模拟器》

Python + Selenium 自动化测试《人生重开模拟器》相关推荐

  1. 【用Python模拟实现人生重开模拟器】

    # 人生重开模拟器 # 导入模块 import random import sys import timeprint('---------------------------- ---------') ...

  2. 人生重开模拟器(Python实现)

    文章目录 人生重开模拟器介绍 代码实现 打印初始界面 设置初始属性 设置角色性别 设置角色出生点 针对每一岁,生成人生经历 人生重开模拟器介绍 人生重开模拟器是由VickScarlet上传至GitHu ...

  3. <人生重开模拟器>——《Python项目实战》

    目录 1.模拟实现 "人生重开模拟器" 1.1 问题导引: 1.2 问题分析: 2. 模拟实现分析及步骤: 3.完整源码: 4.写在最后的话: 后记:●由于作者水平有限,文章难免存 ...

  4. Python人生重开模拟器(高级版)

    目录 目录 ​编辑 目录 前言 游戏成果 截图 开始吧 游戏主框架 定义人类属性 定义人类方法 定义身份判断方法 定义初始化方法 定义成长方法 定义显示属性方法 定义打开背包方法 定义学习方法 定义商 ...

  5. Python人生重开模拟器(高级版(升级))

    文章目录 前言 游戏成果 截图 开始吧 增加引用 函数 定义新函数 关闭进程函数 修改部分函数 修改显示主菜单函数 类 定义新类 定义工作类 定义工作类框架 定义工作类方法 找工作方法 工作方法 工作 ...

  6. Python 实现“人生重开模拟器“

    实现 "人生重开模拟器" 这是一款之前很火的文字类小游戏. 玩家输入角色的初始属性之后, 就可以开启不同的人生经历. 大家可以在网上搜索 "人生重开模拟器", ...

  7. 案例1:人生重开模拟器(Python)——直接带你入门~

    本案例--人生重开模拟器,主要的目的就是熟悉和掌握基础语法(不涉及def定义函数)的基本操作~~ 一.下面是本系统用到的主要语法: 基础语法(一): 常量.变量.类型(整数,浮点数,字符串,布尔值). ...

  8. python入门学习之小工具制作系列--01使用tkinter库封装(人生重开模拟器)小游戏

    一.制作背景: 过年浏览csdn博文时,有看到其他博主的一篇人生重开模拟器的小游戏,将代码拷贝运行后看效果很好,非常有趣.于是就学习使用tkinter库将源代码封装,使其可以成为应用小游戏. 二.人生 ...

  9. Python实现简单版本的人生重开模拟器

    介绍 "人生重开模拟器",这是一款文字类小游戏,在百度也可以直接搜到各种网页版本. 玩家输入角色的初始属性之后,就可以开启不同的人生经历. 这里只是简单的实现一下(不然代码量太多) ...

最新文章

  1. HttpClient(联网)
  2. 十二、使用索引规则【完】
  3. java中的me关键字_java中的volatile关键字
  4. html head
  5. 大型软件公司.Net面试题(二)
  6. 《王者荣耀》主策划Xavier分享腾讯游戏10年在职经历
  7. MongoDB管理:慎用local、admin数据库
  8. python属性_深入理解python对象及属性
  9. 股市最好用的大数据软件_十大股票软件排名谁知道?
  10. linux清除回收站权限错误,在Ubuntu 14.04 中修复无法清空回收站的问题
  11. python爬虫爬取补天公益SRC厂商
  12. 图解设计模式-设计模式七大原则
  13. ElasticSearch(项目中常用的ES)
  14. HTML中关于<br>,<P>换行符的区别和使用影响
  15. ubuntu18使用preseed文件定制ISO镜像实现自动化安装
  16. 换ssd后Oracle,PS4更换480G SSD,终于流畅了!附更换教程
  17. svn常用命令以及冲突解决
  18. 如何获取input输入框中的值?
  19. python中咕噜咕噜的冒泡函数
  20. 计算器:中缀转后缀与后缀的计算

热门文章

  1. 荣耀v8升级android 8,荣耀V8强刷EMUI8.0系统图文教程(EMUI5.0直升EMUI8.0)
  2. 拆解PowerApps - 请假申请 -1
  3. 国产高精度比较器MS762/M、MS761 对标SGM8742YMS8
  4. java长链接主动推送_java以post发送方式实现百度链接提交主动推送(实时)
  5. 模拟人生5显示与服务器,《GTA5》千人同服是什么样的体验?不是在玩游戏,而是现实?...
  6. RGB转Y(Gray)算法实现
  7. APICloud AVM框架 封装SKU(商品规格选择)组件
  8. 罗永浩的人设,这次要彻底崩了?
  9. [转]非金钱激励员工的108种手段
  10. JavaStudy4(集合+泛型)—B站韩顺平