如何使用硒拖放滑块手柄(ng5-slider)

时间:2019-05-27 19:57:18

标签: python selenium automation webdriver ui-automation

我正在尝试使用Selenium(特别是在Python中)将两个手柄滑块的手柄拖动到特定值。我的问题是滑块手柄没有移到我想要的值。例如,我正在尝试将最小手柄移到“ 1”,但它移到“ 0.95”。

滑块详细信息:

    分钟。值:0(位于像素中:0)
  1. 最大值:“ 20”(位于像素中:285)
  2. 滑块宽度:300像素
  3. 滑块增量:0.05(0,0.05,0.1,1.05,...,19.95,20)
  4. Screenshot of the slider if it helps

这是我的代码,其中添加了注释:

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”。我试图在不进行这种减法的情况下执行代码,但仍然无法正常工作。

0 个答案:

没有答案