独书先生 Menu

如何一键制作党100周年生日头像

党的100周年纪念日已经到来,大家纷纷在朋友圈表达对我们伟大党组织的热爱,我们现在幸福的生活离不开可爱的党员先锋们的努力!

心细的网友开始号召大家修改自己的微信头像,制作自己专属的爱党微信头像。

但是朋友不知道怎么换一个100周年纪念头像,使劲@微信官方,赐我一面国旗,可以说这个方式没有作用,@官方是行不通的,不如自己动手给自己选个爱党爱国微信头像,迎接党的100岁生日!

小编给大家推荐一款新出的一键换头像的网页应用,一个简单的建党100周年纪念头像制作方法。

国旗头像制作:https://lwebapp.com/zh/flag-avatar-maker
头像生成器:https://lwebapp.com/zh/avatar-maker

这其实也是一个免费在线制作头像的应用,包含有十多种党的生日素材,还在优化中,大家有新的需求还可以发到独书先生微信公众号求更新功能。

话不多说,快来生成你的建党100周年专属头像吧!

关注公众号:技术分社,回复:头像,即可领取专属党100周年生日头像
微信公众号技术分社

公务用车补贴和办公通讯补贴个人所得税可以退税?

最近有传闻,个人所得税退税政策有最新消息,可以申请公务交通补贴或者办公通讯补贴,也就是可以减免个人所得税退一部分税到个人手上。有的朋友已经退了1700多。

据说是我们之前不知道的免税政策,交通补贴和通讯补贴,每个人都是一样的免税额,按照操作视频里操作步骤即可完成申请,笔者也抱着试试看的心态也填写了申请。

特别的,在备注里填写以下信息:

根据税务总局发布的关于公务交通补贴个人所得税有关问题的公告中,企业职工 公务用车费用税前扣除标准:每人 1200 元/月;企业职工通讯费补贴税前扣除标准:每人 240 元/月,一年是17280

有的朋友说会被驳回,原因在于,个人所在单位必须是工资组成内包含有公务用车和办公通讯补贴,也就是必须是自己单位提供了这个福利,你才能享受补贴退税政策。

小编特意去查了下,比如这个海南大学财务处就发出了澄清公告,因为很多人没有补贴福利,自然没有这个退税政策。

参考地址:https://ha.hainanu.edu.cn/cwc/info/1004/2022.htm

而且重点是有补贴福利的单位,是单位已经帮你申报好了,不用自己操作的,这一块内容也可以找单位人事确认下。

敲黑板,结论出来了:

只有部分有交通补贴或者电话补助的单位才有这个免税福利,而且是有的单位会帮你申报,不用自己申报的。

所以再次注意下,这个福利不是每个人都有,大家不要以讹传讹认为都可以申请,一定要关注具体政策,仔细咨询下自己所在单位有没有这个交通用车补贴或者通讯补贴,具体可以看下自己的劳动合同或者直接问人事。

关注公众号:技术分社
微信公众号技术分社
– 回复:福利. 即可加入退税福利最新消息共享群
– 回复:加群主. 即可添加群主的微信

家有任何最新退税或者其他政策福利,都可以及时分享到群里,但是不能打广告。

文章特别强调大家要关注自己单位的具体交通补贴或者通讯补贴,从人事那里确认好是否有这个补贴,否则不要随便操作。千万不要乱传谣言,大家一起维护互联网环境。有朋友说申请被驳回会影响征信,这个不确定,也不排除有这个可能。具体是否可以申请免税可以咨询单位的人事,确认有补贴福利的才能进一步操作。现在大家众说纷纭,不要轻易相信谣言。

上海打新冠疫苗补贴怎么领?

最新第二针疫苗重新开放,有多家负责人发来消息。第一针有部分负责人发出补贴消息,但是出现疫苗紧缺的情况,暂时第一针还没有补贴。

7.24 今天发布一个重要消息,现在在提供第一针疫苗补贴的预约,我们建议是如果您第一针还没接种,可以先预约我们的补贴名额,到时候有了补贴信息,会第一时间通知您。预约请关注文末公众号。

7.22 更新两条关于上海第二针新冠疫苗补贴信息。

福利一:
❤️❤️好消息不断∶

外省第一针的褔音来了!!

在外省打的第一针可以在上海打第二针啦

7⃣月2⃣3⃣号第二针补贴计划要求∶
除宝山的第一针不要,全国打第一针的都要

🅰地铁口附近打更方便
🅱不排队,到了就打!
🆎对接正规社区医院,名额有限,速速报名挂号预约

㊗️补贴路费2⃣0⃣0⃣元

明天中午11点1号线终点站富锦路集合

联系微信:关注文末公众号

福利二:
❤️❤️好消息 好消息

7⃣月2⃣3⃣号疫苗补贴

第一针必须上海打的,其他外省不要,在地铁口附近打很方便。
注∶不用等,到了就打,不排队

(宝山打的第一针不要❌)
1⃣打第二针疫苗❤️❤️
〔名额50人〕
2⃣每人补贴300💰

集合时间∶
🅰上午9∶30分集合
🅱下午18∶00点之前

1号线友谊西路1号口集合

3⃣必须满21天,第22天开打

⚠️抓紧时间
地址:友谊西路1号口集合

〔微信报名〕关注文末公众号


7.21更新两条关于上海第二针新冠疫苗补贴信息。

疫苗补贴福利,长期有效

福利一:
7.22宝山区第二针新冠疫苗补贴,每人补贴300,另外再送价值200元左右精美套装产品,总价值超过500元!在地铁口附近打很方便。

要求:
1. 第一针必须上海打的,在外省打针的不要(宝山打的第一针不要)
2. 必须满21天,第22天开打
3. 带上身份证,手机

时间:
1. 早上9点30前到地铁口集合
2. 上午没时间下午5点之前

地址:
7号线美兰湖1号口

注意:️打针*留观共一个小时左右结束,拿着出门证领补贴回家

微信报名:关注文末公众号

名额有限,先到先得。一定要提前报名,没有报名自己去的,没有任何补贴

福利二:
7.22宝山区第二针新冠疫苗补贴,每人补贴300!在地铁口附近打很方便。

要求:
1. 第一针必须上海打的,在外省打针的不要(宝山打的第一针不要)
2. 必须满21天,第22天开打
3. 带上身份证,手机

时间:
上午9点—11:00

地址:
1号线通河新村4号口

微信报名:关注文末公众号

名额有限,先到先得。一定要提前报名,不报名没补贴


7.20更新三条关于上海新冠疫苗补贴信息。

写在前面:
如果时间过了也没关系,关注文末公众号,获取最新消息。

2021.07.20更新

消息一

📢📢好消息 好消息

7.21号,宝山区第二针,价值将近500元的补贴!

第一针必须上海打的,在外省打针的不要,在地铁口附近打很方便。

(宝山打的第一针不要)

1⃣打第二针疫苗❤️❤️
〔名额50人〕
2⃣每人补贴240💰,另外再送价值200元左右精美套装产品,总价值接近500元!

🔊🔊集合时间和地点∶

🅰早上9点前到地铁口集合

🅱上午时间紧赶不上的下午3点之前到!!!!

⚠️抓紧时间‼️‼️‼️
地址:7号线美兰湖2号口集合

3⃣必须满21天,第22天开打

4⃣带上身份证,手机即可

❤️打针*留观共一个小时左右结束,拿着出门证领补贴回家

〔微信报名〕关注文末公众号

🚄尽量早点来,不排队,到了就打

消息二

📢📢好消息 好消息

7.21号,杨浦区第二针补贴加码进行,外省来打疫苗也可以补贴了!

第一针在上海打的,或者在外省打的都可以,在地铁口附近打很方便。

(除了杨浦打的第一针不要)

特别注明∶在外省打过第一针疫苗的也可以在这里打第二针!但外省的来打,你的第一针是要求北生或者科兴。

1⃣打第二针疫苗❤️❤️
〔名额50人〕
2⃣每人补贴220💰

🔊🔊集合时间和地点∶

🅰早上9点00前到

🅱上午时间紧赶不上的下午6点之前到也可以打!!!!

⚠️抓紧时间📣抓紧时间
地址∶
🆎12号线爱国路地铁3号口集合

3⃣必须满21天,第22天开打

4⃣带上身份证,手机即可

❤️打针*留观共一个小时左右结束,拿着出门证领补贴回家

〔微信报名〕关注文末公众号

🚄尽量早点来,不排队,到了就打

消息三

以上两则消息,不出意外,还会继续进行到7月底,请大家保持关注。

现在第一针还没有补贴消息,如果还没有接种第一针的,建议直接附近社区卫生院或者医院就近接种即可。后续如果第一针有补贴,我们会在公众号通知的。请关注文末公众号。


7.18更新四条补贴信息

2021.07.18更新

消息一
7.19号第一针必须上海打的,其他外省不要,在地铁口附近打很方便。

(宝山打的第一针不要)
1⃣打第二针疫苗❤️❤️
〔名额50人〕
2⃣每人补贴200💰

集合时间∶
明天早上9点前到
3号线殷高西路2号口

3⃣必须满21天

⚠️抓紧时间
地址:3号线殷高西路2号口

消息二

明天宝山第二针 补贴300元,
要求:男女不限18-50周岁,间隔22-57天,
【带上身份证和智能手机】
【要求】第一针在上海打的,不在宝山打的就行,
集合地址时间:10点-16点到,宝山

消息三
补贴300
明天19号殷高西路/宝安公路/顾北东路疫苗第二针
要求:男女不限18-60周岁【带上身份证和智能手机】
【要求】
①第一针是在上海打的
②第一针不是在宝山区打的
地址:上午9点-14点到殷高西路地铁站集合,现场结钱走人,现场不拿钱回去一律不认账

补贴200
明天19号虹口邮电新村疫苗第二针
要求:
①第一针是在上海打的
②满21天和不超过56天
③带好身份证原件
8-14点在10号线邮电新村地铁站集合
备注:名额不多,不用排很长的队伍,尽量早点来,早来早结束,早来不排队

消息四
7.19友谊西路有第二针补贴300

以上是7.18更新的最新补贴消息,联系人信息请关注文末公众号加群获取。
如果时间过了也没关系,关注后续公众号后续信息更新。

2021.07.10更新

最新补贴消息:

7.11号金海路第二针 补贴200
要求:男女不限18-60周岁
1. 【带上身份证和智能手机】
2. 【要求】第一针在上海打的就行,不分区域(崇明除外)

地址: 金海路地铁站集合-具体拉群通知
备注: 现场结钱走人,现场不拿钱回去一律不认账
**报名微信:关注文末公众号接受最新消息

名额有限,先到先得

===========

2021.06.30更新
现在上海的指标基本都满了,大多数的补贴都是在30号之前结束,后续有新的福利会再发出来,大家敬请期待。

关注文末公众号接受最新消息

===========

2021.06.29更新

最新消息,明天30号浦东三林第二针❤补贴260

【要求】男女不限、18-60周岁
★带上身份证和智能手机】
【要求】第一针在上海打的就行,不分区域
【地址】上午9点-中午12点(大巴统一去现场)群里通知集合地铁站

【备注】现场结钱走人,现场不拿钱回去一律不认账

负责人微信请关注公众号:技术分社(文末有二维码),加群主获取,因为涉及个人隐私,不方便放到公网。

特别提醒去之前请一定联系负责人,因为现在补贴指标消耗太快,都是抢名额,联系下确认还有指标再去,免得白跑一趟。


正文开始

注意,顾村公园的补贴已经没有了,这里是记录小编领取补贴的过程。

最近,上海为了完成疫苗接种的指标,开始送牛奶送食用油,现在放了更大招,直接补贴350块钱!很多朋友就来咨询打疫苗还有补贴吗?上海第二针疫苗补贴活动详情具体情况?

去打疫苗的同事已经领到了,不是骗人的。不过,要真正领到补贴,要注意小编接下来要提醒的注意事项。

要求

  1. 这次疫苗补贴主要的集中点是在顾村公园地铁站
  2. 第二针还没打的人。第一针不是在宝山区域内打的就行,外地的不行
  3. 早上8:30—下午3:00点之前去顾村公园地铁站3号口(不一定是3号口,不同的中介指定的集合点可能有差异)
  4. 带上身份证,手机(需要从对接人那里加群),笔(签到用,现场也有笔,但是人多的话自己带效率更高),充电宝(可能排队时间过长手机没电)

福利

  1. 补贴交通费350元
  2. 不定期福利打针抽奖,奖品有:纸巾🧻 苹果手机📱 电动车🛵

主要流程
1. 早点去顾村公园地铁站,8点之前那边就有人在等了,到之前先从对接人(联系加下面微信)那里加群,到了地铁站之后就联系领队(因为人多,领队不一定能联系上,但是不用担心,注意现场情况,领队会报自己名字,找到对应人就行)
2. 找到对应领队,然后排队签到
3. 签完到在旁边等着,等签完一定人数,领队会带一波人去附近的商场空地等待上大巴,期间还会加一个现场群
4. 接着上大巴去指定疫苗接种点进行接种
5. 接种完疫苗会回到大巴上车点,拿好接种的单子找领队领补贴就行

以上是现有的接种疫苗补贴流程,简要写了下顾村公园二针疫苗怎么打的关键信息,这次补贴的内部操作我们外行人还不太清楚,表面上看是有很多中介在做这事,对我们老百姓来说就是找到对应人就行。

大家可以作为一个参考,但是因为政策可能随时在变,流程也可能做些优化和更新。

关注公众号: 技术分社,
微信公众号技术分社
– 回复:疫苗或者预约. 即可获取补贴负责人的微信

Tree树形控件展示当前路径

问题

现有一个树形结构的菜单,支持无限的嵌套层级,需要根据用户点击的某个子菜单,获取到这个子菜单所在节点的路径,类似于面包屑效果。

一个合格的树形菜单数据结构

const menu = [{
          id:'1',
          label: '一级 1',
          children: [{
            id:'11',
            label: '二级 1-1',
            children: [{
              id:'111',
              label: '三级 1-1-1'
            }]
          }]
        }, {
          id:'2',
          label: '一级 2',
          children: [{
            id:'21',
            label: '二级 2-1',
            children: [{
              id:'211',
              label: '三级 2-1-1'
            }]
          }, {
            id:'22',
            label: '二级 2-2',
            children: [{
              id:'221',
              label: '三级 2-2-1'
            }]
          }]
        }, {
          id:'3',
          label: '一级 3',
          children: [{
            id:'31',
            label: '二级 3-1',
            children: [{
              id:'311',
              label: '三级 3-1-1'
            }]
          }, {
            id:'32',
            label: '二级 3-2',
            children: [{
              id:'321',
              label: '三级 3-2-1'
            }]
          }]
        }]

解决方案

思路:

递归整个树形菜单,记录下每次循环时候的当前路径名称,匹配到之后再把所有节点名称拼接起来。

其中有一个关键处理点是每次循环到同级数组,需要重新开始记录路径,否则会出现路径重复的情况

代码:

/**
 * @param {array[][]} data 整个菜单数组
 * @param {object[][]} v 当前节点对象
 * @return {string[]} 当前节点对象路径
 */

function findPath(data, v){
            var find = false; //找到id后标记,结束递归
            var paths = [];

            findId(data, v.id);

            return paths.join('/');

            function findId(root, vid) {

                var currentPathsLength = paths.length;

                root.forEach((ele, i, root) => {
                    // 后面不再循环找了
                    if (find) {
                        return
                    }

                    // 每次循环到同级数组,重新开始记录路径
                    paths = paths.slice(0,currentPathsLength);
                    paths.push(ele.label)


                    // 找到即返回
                    if (ele.id === vid) {
                        find = true;
                        return;
                    } else if (Array.isArray(ele.children) && ele.children.length > 0) { //有子节点继续寻找
                        return findId(ele.children, vid)
                    }

                });

            }
        }

在线演示:

See the Pen
zYKeVJe
by alex (@dushusir)
on CodePen.

老司机珍藏的几个免费在线小电影网站推荐

介绍

由于疫情影响,很多的小伙伴只能居家办公,或者直接被隔离在家。可是长时间呆在家里,还是会有些无聊,总想看点小电影或者电视剧打发下时间。无奈现在个大视频APP推出了各种VIP/VVIP/VVVIP服务,还有会员专属广告,本来能看的电影就不多,还要收费,让小伙伴们怨声载道。

今天,小编就给大家推荐几个免费的电影网站,这几个网站不仅完全免费,而且资源丰富,没有广告,支持手机观看,是不是有点心动了?那就来看看吧!

  1. 在线之家 https://www.zxzj.me/

视频播放窗口右下角支持下载视频,如果网速慢的可以先下载下来观看,而且是高清的。大部分的美剧也有,小编看美剧基本就是用这个网站了。

  1. 扛把子影院 https://www.21meiju.com/

原q2002.com,现在换域名了,资源更新非常快,基本上电影院放的电影,很快就有资源出来。

  1. ADC电影网 https://www.adcmove.com/

ADC电影网资源很全,界面简洁清新,访问也很快。可以试试。

  1. 9亿看看 https://www.9ekk.com/

一个完全免费的网站,搜集了大量电影/电视剧的网站,效果很棒。

最后,小编要说 ,如果在这几个网站还找不到您想要的看的小电影,那么只有采用终极大招了,因为百度/搜狗/多吉已经满足不了你了,唯有谷歌大大才可以(谷歌大大的搜索关键词匹配很精准哦,懂的老司机自然懂)。

下面推荐大家试用小编一直在使用的访问谷歌工具,温馨提醒,想要访问P站的朋友,也必须使用这款工具哦~

EXPRESS

注册之后,直接上谷歌搜索任何你想搜索的关键词即可,还不赶紧行动。

如果还有疑惑,建议先阅读这边博文了解情况

宅男必备居家神神器

base64转blob并下载文件

需求

支持文件转为base64,base64转blob,blob下载为文件

代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h2>base64 to file</h2>
    <textarea name="" id="text-area" cols="30" rows="10" style='width:100%;height: 200px;' placeholder="Paste base64 string here"></textarea>
    <button class="download-btn" style='width: 150px;height:50px;display: block;margin:10px auto;'>Download</button>
    <script>

            /**
            * 上传附件转base64
            * @param {File} file 文件流
            */
            const fileByBase64 = (file, callback) => {
                var reader = new FileReader();
                // 传入一个参数对象即可得到基于该参数对象的文本内容
                reader.readAsDataURL(file);
                reader.onload = function (e) {
                    // target.result 该属性表示目标对象的DataURL
                    console.log(e.target.result);
                    callback(e.target.result)
                };
            }
            /**
            * base64转Blob
            * @param {*} data 
            */
            const base64ByBlob = (base64, callback) => {
                var arr = base64.split(','), mime = arr[0].match(/:(.*?);/)[1],
                    bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
                while (n--) {
                    u8arr[n] = bstr.charCodeAt(n);
                }
                console.log(new Blob([u8arr], { type: mime }))
                callback(new Blob([u8arr], { type: mime }))
            }

            document.querySelector('.download-btn').addEventListener('click',function(e) {
                const base64 = document.querySelector('.text-area').inneerText;

                // fileByBase64(file, (base64) => {
                    base64ByBlob(base64, (blob) => {
                    // var url = window.URL.createObjectURL(blob)


                    const fileName = `${new Date().valueOf()}.txt`;
                    const link = document.createElement('a');
                    link.href = window.URL.createObjectURL(blob);
                    link.download = fileName;
                    link.click();
                    window.URL.revokeObjectURL(link.href);
                })
                // })

            })


    </script>
</body>
</html>

js倒计时自定义小时分钟

需求

实现一个倒计时一小时的网页应用

代码







Document

小时
分钟
<p class="count"></p>

<button id="start">START</button>
<script>
  window.onload = function () {
    // countDown();

    document.querySelector("#start").addEventListener("click", () => {
      function addZero(i) {
        return i < 10 ? "0" + i : i + "";
      }

      var hour = document.querySelector("#hour");
      var min = document.querySelector("#min");
      var countTimeHour = parseInt(hour.value === "" ? "1" : hour.value);
      var countTimeMin = parseInt(min.value === "" ? "0" : min.value);

      var nowtime = new Date(); //你已知的时间
      var t_s = nowtime.getTime(); //转化为时间戳毫秒数
      var endtime = new Date(); //定义一个新时间
      t_s = t_s + 1000 * 60 * countTimeMin; //设置新时间比旧时间多一分钟
      t_s = t_s + 1000 * 60 * 60 * countTimeHour; //设置新时间比旧时间多一小时;
      endtime.setTime(t_s);
      // nt.setTime(t_s+1000*60*60*24);//设置新时间比旧时间多一天

      countDown();

      function countDown() {
        var nowtime = new Date(); //你已知的时间
        //   var endtime = new Date("2019/03/16,17:57:00");
        var lefttime = parseInt(
          (endtime.getTime() - nowtime.getTime()) / 1000
        );
        var d = parseInt(lefttime / (24 * 60 * 60));
        var h = parseInt((lefttime / (60 * 60)) % 24);
        var m = parseInt((lefttime / 60) % 60);
        var s = parseInt(lefttime % 60);
        d = addZero(d);
        h = addZero(h);
        m = addZero(m);
        s = addZero(s);
        document.querySelector(
          ".count"
        ).innerHTML = `活动倒计时  ${d}天 ${h} 时 ${m} 分 ${s} 秒`;
        if (lefttime <= 0) {
          document.querySelector(".count").innerHTML = "Time Over!";
          var isShow = false;
          setInterval(() => {
            isShow = !isShow;
            if (isShow) {
              document.title = "😆Time Over!";
            } else {
              document.title = "";
            }
          }, 1000);
          return;
        }
        setTimeout(countDown, 1000);
      }
    });
    // window.countDown = function () {

    // };
  };
</script>



分享一个支付宝自动集五福脚本

Alipay-wufu-1.0.1

介绍

Alipay-wufu-1.0.1工具,支付宝自动集五福

说明

  1. 首先输入要领取的站点开始的序号,总共53个站点可以领取
  2. 每隔60s会自动切换到下个站点进行领取,已经领取成功的,会进行记录,下次程序运行时将忽略领取成功的站点
  3. 如果要换手机号领取,需要重新解压这个压缩包,把success.json覆盖掉,不然会因为上个手机号领取成功的站点而进行跳过。

注意

  1. 支付宝此活动不能连续获得60(2月3日,根据大家的情况反映,支付宝已经把风控数量调整到10个验证码左右,24小时后解除风控)个验证码,否则24小时内无法再参加此次活动!
  2. 程序暂无GUI页面,先凑合着用把。site.json和success.json必须和程序在一个目录,否则程序会闪退!
  3. 因为打包环境是64位的,所以程序不支持32位操作系统。
  4. 因为此次支付宝五福为了让大家交换卡,每人获得除了敬业福之外的随机两种福的概率是最大的,所以一般会大量开出两种福,这是正常现象。

声明

该项目分享自互联网,仅用于测试学习目的,该仓库及所有人不负任何损失责任。侵删。

下载地址

Alipay-wufu-1.0.1

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