首页 > 编程语言 >《最新出炉》系列初窥篇-Python+Playwright自动化测试-20-处理鼠标拖拽-下篇

《最新出炉》系列初窥篇-Python+Playwright自动化测试-20-处理鼠标拖拽-下篇

时间:2023-10-13 14:46:44浏览次数:53  
标签:Playwright Python text 宏哥 drag color 初窥篇 handler page

1.简介

上一篇中,宏哥说的宏哥在最后提到网站的反爬虫机制,那么宏哥在自己本地做一个网页,没有那个反爬虫的机制,谷歌浏览器是不是就可以验证成功了,宏哥就想验证一下自己想法,其次有人私信宏哥说是有那种类似拼图的验证码如何处理。于是写了这一篇文章,另外也是相对前边做一个简单的总结分享给小伙伴们或者童鞋们。废话不多数,直接进入今天的主题。

2.滑动验证码

2.1演示模拟验证码点击拖动场景

例如:演示模拟验证码点击拖动场景示例如下:

3.代码准备

3.1前端HTML代码

前端HTML代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>北京-宏哥 滑动条</title>
    <link rel="stylesheet" href="drag.css">
    <script src="jquery-1.7.1.min.js"></script>
    <script src="drag.js"></script>
    <style type="text/css">
        .slidetounlock{
            font-size: 12px;
            background:-webkit-gradient(linear,left top,right top,color-stop(0,#4d4d4d),color-stop(.4,#4d4d4d),color-stop(.5,#fff),color-stop(.6,#4d4d4d),color-stop(1,#4d4d4d));
            -webkit-background-clip:text;
            -webkit-text-fill-color:transparent;
            -webkit-animation:slidetounlock 3s infinite;
            -webkit-text-size-adjust:none
        }
        @-webkit-keyframes slidetounlock{0%{background-position:-200px 0} 100%{background-position:200px 0}}
        .button1 {
            background-color: #f44336; 
            border: none;
            color: white;
            padding: 15px 32px;
            text-align: center;
            text-decoration: none;
            display: inline-block;
            font-size: 28px;
            margin-bottom: 100px;
            text-decoration:none;
            color: white;
        }
        #myAnchor
        {
          text-decoration:none;
          color: white;
        }
    </style>
</head>
<body>
<div id="wrapper" style="position: relative;top: 300px;left:300px;">
    <button class="button1"><a id="myAnchor" href="https://www.cnblogs.com/du-hong/">北京-宏哥</a></button></br>
    <div id="drag">
        <div class="drag_bg"></div>
        <div class="drag_text slidetounlock" onselectstart="return false;" unselectable="on">
            请按住滑块,拖动到最右边
        </div>
        <div class="handler handler_bg"></div>
    </div>
</div>

    <!--<a href="#" class="img"><img src="img/Lighthouse.jpg"/></a>-->
<script>
    $('#drag').drag();
</script>
</body>
</html>

3.2滑块CSS样式

HTML滑块CSS样式代码如下:

#drag{
    position: relative;
    background-color: #e8e8e8;
    width: 300px;
    height: 34px;
    line-height: 34px;
    text-align: center;
}
#drag .handler{
    position: absolute;
    top: 0px;
    left: 0px;
    width: 40px;
    height: 32px;
    border: 1px solid #ccc;
    cursor: move;
}
.handler_bg{
    background: #fff url("../img/slider.png") no-repeat center;
}
.handler_ok_bg{
    background: #fff url("../img/complet.png") no-repeat center;
}
#drag .drag_bg{
    background-color: #7ac23c;
    height: 34px;
    width: 0px;
}
#drag .drag_text{
    position: absolute;
    top: 0px;
    width: 300px;
    color:#9c9c9c;
    -moz-user-select: none;
    -webkit-user-select: none;
    user-select: none;
    -o-user-select:none;
    -ms-user-select:none;

    font-size: 12px;        //  add
}

3.3滑块拖拽JS

滑块拖拽JS代码如下:

$.fn.drag = function(options) {
    var x, drag = this, isMove = false, defaults = {
    };
    var options = $.extend(defaults, options);
    var handler = drag.find('.handler');
    var drag_bg = drag.find('.drag_bg');
    var text = drag.find('.drag_text');
    var maxWidth = drag.width() - handler.width();  //能滑动的最大间距

    //鼠标按下时候的x轴的位置
    handler.mousedown(function(e) {
        isMove = true;
        x = e.pageX - parseInt(handler.css('left'), 10);
    });

    //鼠标指针在上下文移动时,移动距离大于0小于最大间距,滑块x轴位置等于鼠标移动距离
    $(document).mousemove(function(e) {
        var _x = e.pageX - x;// _x = e.pageX - (e.pageX - parseInt(handler.css('left'), 10)) = x
        if (isMove) {
            if (_x > 0 && _x <= maxWidth) {
                handler.css({'left': _x});
                drag_bg.css({'width': _x});
            } else if (_x > maxWidth) {  //鼠标指针移动距离达到最大时清空事件
                dragOk();
            }
        }
    }).mouseup(function(e) {
        isMove = false;
        var _x = e.pageX - x;
        if (_x < maxWidth) { //鼠标松开时,如果没有达到最大距离位置,滑块就返回初始位置
            handler.css({'left': 0});
            drag_bg.css({'width': 0});
        }
    });

    //清空事件
    function dragOk() {
        handler.removeClass('handler_bg').addClass('handler_ok_bg');
        text.removeClass('slidetounlock').text('验证通过').css({'color':'#fff'});       //modify
       // drag.css({'color': '#fff !important'});

        handler.css({'left': maxWidth});                   // add
        drag_bg.css({'width': maxWidth});                  // add

        handler.unbind('mousedown');
        $(document).unbind('mousemove');
        $(document).unbind('mouseup');

    }
};

3.4jquery-1.7.1.min.js下载地址

 jquery-1.7.1.min.js下载链接:http://www.jqueryfuns.com/resource/2169

4.自动化代码实现

4.1代码设计

4.2参考代码

# coding=utf-8

标签:Playwright,Python,text,宏哥,drag,color,初窥篇,handler,page
From: https://www.cnblogs.com/du-hong/p/17562536.html

相关文章

  • 铅华洗尽,粉黛不施,人工智能AI基于ProPainter技术去除图片以及视频水印(Python3.10)
    视频以及图片修复技术是一项具有挑战性的AI视觉任务,它涉及在视频或者图片序列中填补缺失或损坏的区域,同时保持空间和时间的连贯性。该技术在视频补全、对象移除、视频恢复等领域有广泛应用。近年来,两种突出的方案在视频修复中崭露头角:flow-basedpropagation和spatiotemporalTran......
  • python实现ppt内容输出为word形式
    一、只输出文本内容frompptximportPresentationfromdocximportDocumentwordfile=Document()#给定ppt文件所在的路径filepath=r"C:\Users\18703\Desktop\智家经分\智家经分v2.pptx"pptx=Presentation(filepath)#遍历ppt文件的所有幻灯片页forslideinppt......
  • python实现docx转pptx(word文档转幻灯片)
    以前都是手工将word内容复制粘贴到ppt中,实在受够了。文心一言真是大忽悠,给的转换方案是用docx2pptx库,然而根本没有这个库,倒是可以用我下面的代码生成这个库:-)网上很多方案是转成图片形式插入ppt,导致无法正常编辑ppt.于是研究出以下方案:1.先将word文档的页面设置改为自定义大小......
  • python_两两比较计算相似矩阵
    距离矩阵余弦距离矩阵余弦距离使用两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比欧氏距离,余弦距离更加注重两个向量在方向上的差异点集内或矩阵内两两元素之间的距离矩阵##简单使用两重循环defcompute_squared_EDM_method(X):#获得矩阵都行和列,因为是行向......
  • Python中的布尔值用途及特点介绍!
    Python中数据类型有很多种,而布尔值就是其中之一,是比较常见的数据类型。Python中bool表示布尔值,布尔值有两个True和Flase,常配合Python的条件语句来使用,一起来看看详细的内容介绍。Python中布尔值是什么?Python中的布尔值是一种基本数据类型,它的取值只有两种True和Flase......
  • python学习笔记3 遍历目录, 列出文件名
    importosdeflistDir(curPath,pixLen):list=[]#print("当前路径:"+curPath)files=os.listdir(curPath)forpathinfiles:fullPath=os.path.join(curPath,path)ifos.path.isfile(fullPath):#append......
  • python 高程灰度图tif转png
    importcv2importnumpyasnpim=cv2.imread('in.tif',flags=(cv2.IMREAD_GRAYSCALE|cv2.IMREAD_ANYDEPTH))height=im.shape[0]width=im.shape[1]print(height)print(width)nmin=4294967296nmax=0forrowinrange(height):forcolinrange(......
  • 制作python3.10镜像带gunicorn
    DockerfileFromharbor.goldwind.com/library/centos:7.9.2009ADDPython-3.10.13.tgz/dataRUNyuminstallmakexz-develpython-developenldap-develbzip2-develexpat-develgdbm-develreadline-develsqlite-develgccgcc-c++openssl-develxorg-x11-xauthzli......
  • python -- 定义函数 def 后面的 ->,:表示的含义
    -> 常常出现在python函数定义的函数名后面,为函数添加元数据,描述函数返回的类型。: 表示参数的类型建议符示例:defadd(x:int,y:int)->bool:if(x>y):returnTrueelse:returFalse这里,表明了函数的参数传入为int类型,输出的类型为bool类型。......
  • python中的各种符号(欢迎补充)
    #!非python特有的语法,主要用在需要在Linux系统执行脚本的时候,shell脚本头顶也会加这个玩意英文名叫“Sha-bang”,告诉Shell使用什么命令执行该脚本,在Linux系统执行python脚本,第一行加这个是告诉系统用哪个bash或者哪个解释器去执行脚本(就这么简单理解吧) ......