Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

滑块匹配结果: {'target_x': 0, 'target_y': 0, 'target': [111, 0, 158, 155]} #252

Open
2754026865 opened this issue Feb 9, 2025 · 0 comments

Comments

@2754026865
Copy link

2754026865 commented Feb 9, 2025

为什么移动距离计算不出来?

Image

def automate_slider_verification(driver):
    def perform_slider_verification():
        # 等待滑块和背景图元素可用
        slider = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '.verify-sub-block img'))
        )
        background = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '.verify-img-panel img'))
        )

        # 获取滑块和背景图的Base64编码
        slider_url = slider.get_attribute("src")
        background_url = background.get_attribute("src")

        # 检查获取的URL是否为None
        if slider_url is None or background_url is None:
            print("错误:未能获取滑块或背景图的URL")
            return

        slider_url = slider_url.replace('data:image/png;base64,', '')
        background_url = background_url.replace('data:image/png;base64,', '')

        # 将Base64编码转换为图像并保存
        base64_to_image(slider_url, 'slider.png')
        base64_to_image(background_url, 'background.png')

        # 使用ddddocr进行滑块匹配
        det = ddddocr.DdddOcr(det=False, ocr=False)

        # 读取临时文件
        with open('slider.png', 'rb') as f:
            target_bytes = f.read()
        
        with open('background.png', 'rb') as f:
            background_bytes = f.read()

        # 进行滑块匹配,使用simple_target=True
        res = det.slide_match(target_bytes, background_bytes, simple_target=True)
        print("滑块匹配结果:", res)

        # 使用target计算滑块的移动距离
        if 'target' in res:
            distance = res['target'][0] + 60  # 计算滑块的目标位置,加上10以调整
            tracks = get_tracks(distance)  # 获取移动轨迹
        else:
            print("错误:返回结果中缺少目标坐标信息")
            return

        # 模拟滑动操作
        slider_button = driver.find_element(By.CSS_SELECTOR, '.verify-move-block')
        move_to_gap(driver, slider_button, tracks)  # 移动滑块

        print("滑块操作完成")

    perform_slider_verification()  # 调用内部函数
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant