1. 网站链接:
    https://www.layui.com/demo/slider.html

  2. 要滑动的元素

  3. 我写的代码

#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Time    : 2021/7/20 上午10:21
# @Author  : demon
# @File    : sss.py
# ==================================

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains


def calc_off_set(driver, slider, percentage):
    """
    :param driver: webdriver对象
    :param slider: 可以拖动的那个小原点元素对象
    :param percentage: 要指定滑动的百分比
    :return: 需要滑动的偏移量
    """
    #滑动一个像素,再划回去一个像素,目的就是为了获取到slider_tips_driver的textContent值
    action_chains.drag_and_drop_by_offset(slider, 1, 0).perform()
    action_chains.drag_and_drop_by_offset(slider, -1, 0).perform()

    # 这个元素才能获取到当前的百分比
    slider_tips_driver = driver.find_element_by_xpath('//*[@id="slideTest2"]/div/div[1]')
    slider_tips_value = float(slider_tips_driver.get_attribute("textContent"))

    #获取小原点到左侧父元素框的距离(左偏移量)
    slider_bar_value = float(slider.get_attribute("offsetLeft"))

    #求出百分之一对应的偏移量的大小
    off_set_unit = slider_bar_value / slider_tips_value  # 求出百分之一的偏移量

    #求出需要的偏移量
    return (percentage-slider_tips_value)*off_set_unit



#浏览器驱动地址
driver = webdriver.Chrome("/home/demon/work/test/chromedriver")
driver.get("https://www.layui.com/demo/slider.html")
action_chains = ActionChains(driver)
#要拖动的元素定位
slider = driver.find_element_by_xpath('//*[@id="slideTest2"]/div/div[3]')
xoffset = calc_off_set(driver, slider, 18)

#选中元素,并按下鼠标左键
action_chains.click_and_hold(slider).perform()
#拖动到指定位置
action_chains.drag_and_drop_by_offset(slider, xoffset/2, 0).perform()
#松开鼠标左键
action_chains.release().perform()

疑问

xoffset 应该是正确的偏移量,但是不知道为什么除以 2,才能滑到我想要的结果,有大佬可以指点一下吗??


↙↙↙阅读原文可查看相关链接,并与作者交流