python selenium5 模拟点击+拖动+按照指定相对坐标拖动 58同城验证码

Posted 山高似水深

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python selenium5 模拟点击+拖动+按照指定相对坐标拖动 58同城验证码相关的知识,希望对你有一定的参考价值。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# @Time    : 2019年12月9日11:41:08
# @Author  : shenghao/10347899@qq.com
‘‘‘test with selenium‘s move by x,y‘‘‘
from builtins import print

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import cv2 as cv
import time, datetime, random,shutil
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.touch_actions import TouchActions
from selenium.webdriver.common.keys import Keys
from PIL import Image
import requests
from io import BytesIO
import cv2, time, sys,re
import matplotlib.pyplot as plt
import numpy as np


class selenium(object):
    def __init__(self):
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36"}
        chrome_option = webdriver.ChromeOptions()
        self.driver = webdriver.Chrome(executable_path="C:Program FilesPython37chromedriver.exe",
                                       chrome_options=chrome_option)
        self.driver.set_window_size(1440, 900)

    def visit_index(self):
        self.driver.get(
            "https://callback.58.com/antibot/verifycode?serialId=62cbf64a21ab4d309e722680c623a4e4_31ec33353c0648b7a5c97b1f2fb35976&code=22&sign=e6760461fc971994a2f3809ff536fbe9&namespace=anjuke_zufang_pc&url=.zu.anjuke.com%2Ffangyuan%2F1206610285371393%3Fisauction%3D1%26shangquan_id%3D1846")
        try:

            click_status = WebDriverWait(self.driver, 5, 1).until(
                EC.element_to_be_clickable((By.XPATH, "//div[@class = ‘code_num‘]/input"))).click()
            html = self.driver.find_element_by_xpath("//*").get_attribute("outerHTML")
            rid = re.search("rid=(.*?)&", html).group(1)
            time.sleep(1)
            self.move(rid)
        except:
            pass

    def move(self,rid):
        element = self.driver.find_element_by_xpath("//div[@class = ‘dvc-slider__handler‘]")
        move_list = ([100,0],[-3,0],[-4,0],[-5,0],[3,0],[2,0],[8,0],[10,0])
        if element:
            ActionChains(self.driver).click_and_hold(on_element=element).perform()
            for m in move_list:
                ActionChains(self.driver).move_by_offset(xoffset=m[0], yoffset=m[1]).perform()
                time.sleep(0.2)
            time.sleep(2)
            self.driver.close()

if __name__ == __main__:
    h = selenium()
    h.visit_index()

 

以上是关于python selenium5 模拟点击+拖动+按照指定相对坐标拖动 58同城验证码的主要内容,如果未能解决你的问题,请参考以下文章

python selenium3 模拟点击+拖动+保存验证码 测试对象 58同城验证码

python selenium4 模拟点击+拖动+保存验证码 测试对象+以验证码的返回ID保存命名 58同城验证码

如何模拟鼠标点击和拖动?

python模拟鼠标拖动教程

python模拟鼠标拖动操作的方法

安卓游戏模拟器电脑版怎么设置按键