如何使用selenium来更改输入值[type ='range']

时间:2013-04-30 17:22:03

标签: java html5 selenium range selenium-webdriver

我有一个在输入上使用html5的滑块 e.g。

<input id="sliderWidget" title="Slide me" type="range" min="1" max="1.6" step="0.3" value="1.3">

我一直在尝试使用selenium来更改滑块,但传统的图像滑块控件对我不起作用....例如

Action dragAndDrop = builder.dragAndDropBy(sliderWidget,0,30).build();
dragAndDrop.perform();

有没有人有任何想法如何执行此增量范围更改

提前致谢

3 个答案:

答案 0 :(得分:8)

您可以选择元素并使用send_keys方法向其发送右/左箭头键(应该递增/递减输入)。 在Python中:

from selenium.webdriver.common.keys import Keys
...
slider = page.find_element_by_id("sliderWidget")
for i in range(10):
  slider.send_keys(Keys.RIGHT)

这应该将值增加10。

答案 1 :(得分:1)

您可以直接在JavaScript中设置值:

WebElement slider = webDriver.findElement(By.id("sliderWidget"));
System.out.println(slider.getAttribute("value"));

JavascriptExecutor js = (JavascriptExecutor) webDriver;
js.executeScript("javascript:document.getElementById(\"sliderWidget\").value=1.5;");

System.out.println(slider.getAttribute("value"));

请注意,sliderWidget已设置为 1.5 但结果为 1.6 。这样您就可以测试step=0.3是否正常运行。

答案 2 :(得分:-1)

我发现最稳定和跨浏览器的方式是执行二进制搜索,在滑块上拖动鼠标直到你到达现场。

我的博客中有Python / webdriver代码:http://blog.usetrace.com/?p=279