独书先生 Menu

All items for 1月, 2021

Python+Selenium自动化测试合成大西瓜

问题

最近想要试一下玩合成大西瓜小游戏,就想能不能自动化运行这个游戏。相当于写一个自动化测试合成大西瓜的脚本,随机点击位置然后触发点击即可。

解决方案

直接采用自动化测试工具Python+Selenium,环境安装方法请参考 Selenium+Python自动化测试(一)

注意:这不是自动完成合成大西瓜的脚本,只是一个演示随机点击的自动化测试学习案例,帮助大家更好的理解selenium的用法。

合成大西瓜小游戏链接:https://dushusir.com/xigua/

(手机端使用微信或者自带浏览器打开即可开始游戏,PC端打开后用F12开启移动调试功能试玩)
适当游戏,娱乐中学习。

视频演示效果

代码

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 谷歌浏览器驱动
from selenium import webdriver

# sleep模块,让程序停止往下运行
from time import sleep

# 操作链
from selenium.webdriver.common.action_chains import ActionChains


# 导入 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/xigua')

# 隐式等待
driver.implicitly_wait(5)

while(True):
    
    # 随机取位置
    randomX = random.randint(20,300)
    randomY = random.randint(200,300)

    print('click')
    # 设定点击位置  
    ActionChains(driver).move_by_offset(randomX, randomY).click().perform()

    # move_by_offset会累计上一次的位置,点击完重置
    ActionChains(driver).move_by_offset(-randomX, -randomY).perform()
    sleep(1)

# driver.quit()

更多

后续关注公众号:技术分社,获取最新脚本和小游戏动态

Typescript CSS module 问题,VSCODE提示 cannot find module ‘XXX.scss’ or its corresponding type declarations

问题

在Typescript + Webpack + Sass项目中使用CSS Module,可以正常引入CSS模块使用,但是vscode总是提示 cannot find module ‘XXX.scss’ or its corresponding type declarations。

解决方案

方案一

1、首先要确保webpack和sass已经能够识别CSS Module,参考webpack官网配置即可 Separating Interoperable CSS-only and CSS Module features

2、配置d.ts
重点来了,这里要注意配置两个d.ts文件
一、主文件index.d.ts

    declare module '*.scss' {
        const content: { [key: string]: any }
        export = content
    }
    

二、同级目录再新增一个typings.d.ts文件

    declare module '*.scss';
    

这样配置后,已经解决了笔者的问题,VSCODE和Node命令行界面都不会报错,而且能正常匹配

方案二

网络推荐的解决方案是在css文件同级目录编写d.ts文件,通常使用插件来自动完成

以下插件选择其一即可
1. webpack插件 typings-for-css-modules-loader
2. webpacl插件 css-modules-typescript-loader
3. 可能需要的插件,Typescript插件 typescript-plugin-css-modules(笔者用了没有效果)

通常安装完插件自动生成每个css的声明文件后,就不会报错了,但是有两个缺点,一是项目文件太多,二是路径别名还是无法被VSCODE识别(Node命令行正常),这个必须是如上配置两个d.ts才能让VSCODE不提示错误。

参考

一些可能的scss文件声明写法

//写法一
declare module '*.scss';

//写法二
declare module '*.scss' {
    const content: any;
    export default content;
}

//写法三
declare module '*.scss' {
    const content: Record;
    export default content;
}

//写法三
declare module '*.scss' {
    const content: { [key: string]: any }
    export = content
}

一些回答 cant-import-css-scss-modules-typescript-says-cannot-find-module