Java 如何使用selenium更改输入[type=';range';]

Java 如何使用selenium更改输入[type=';range';],java,html,selenium,range,selenium-webdriver,Java,Html,Selenium,Range,Selenium Webdriver,我有一个在输入端使用html5的滑块 e、 g 有人知道我如何执行这个增量范围更改吗 提前感谢您可以直接在JavaScript中设置值: WebElement slider = webDriver.findElement(By.id("sliderWidget")); System.out.println(slider.getAttribute("value")); JavascriptExecutor js = (JavascriptExecutor) webDriver; js.execu

我有一个在输入端使用html5的滑块 e、 g

有人知道我如何执行这个增量范围更改吗


提前感谢

您可以直接在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
是否工作正常。

我发现最稳定和跨浏览器的方法是执行二进制搜索,在滑块拇指上拖动鼠标,直到找到位置


我在我的博客中有Python/webdriver代码:

您可以选择元素并使用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。

这不是一个实际的测试。即使该元素不可访问,这也会起作用。更重要的是,它不会触发
上的更改处理程序。这可能是最现实的方法。但这几乎是一个链接唯一的答案。如果没有链接,我肯定无法解决这个问题。这是个不错的主意-但我得到
WebDriverException:Message:unknown error:cannot focus element
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"));
from selenium.webdriver.common.keys import Keys
...
slider = page.find_element_by_id("sliderWidget")
for i in range(10):
  slider.send_keys(Keys.RIGHT)