我正在尝试使用Selenium(特别是在Python中)将两个手柄滑块的手柄拖动到特定值。我的问题是滑块手柄没有移到我想要的值。例如,我正在尝试将最小手柄移到“ 1”,但它移到“ 0.95”。
滑块详细信息:
这是我的代码,其中添加了注释:
this.options = {
legend: {
display: true,
position: "bottom"
},
title: {
display: true,
text: "This is the tiitle"
}
};
可能值得一提的是,滑块的类型为“ ng5-slider”(https://www.npmjs.com/package/ng5-slider),因为我在google中找不到的解决方案对我有帮助
此外,当我在铬检查器的“ 0.95”和“ 1”的计算面板中查看“ left”值时,我看到相同的像素值: For value: "0.95" For value: "1" 因此,我假设像素值是四舍五入的,因此我无法真正猜出用于计算增量的公式。
所提到的滑块的HTML代码:
def drag_handle_using_mouse(self, handle, new_val):
actions = ActionChains(self.driver)
slider_width = Decimal(self.slider.size["width"] - handle.size["width"]) # The max. val is always located 15 pixels left from the max. value
pixel_increments = Decimal(slider_width / ((self._max_handle_val - self._min_handle_val) / self._increments))
cur_val = self.get_handle_value(handle)
no_of_pixels_to_move = Decimal(pixel_increments * (new_val - cur_val) / self._increments)
actions.drag_and_drop_by_offset(handle, no_of_pixels_to_move, 0).perform()
actions.reset_actions()
有人知道我的代码有什么问题吗?似乎我在错误地计算像素增量,但我不明白问题出在哪里。
重要注意事项::正如我在代码段中已经指出的那样,自最大值以来,我正在从滑块宽度中减去“ 15”。值(在这种情况下为“ 20”)位于像素编号。 “ 285”,滑块宽度为“ 300”。我试图在不进行这种减法的情况下执行代码,但仍然无法正常工作。