要滑动的元素
我写的代码
#!/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,才能滑到我想要的结果,有大佬可以指点一下吗??