如何使用 Selenide 读取/写入/更改 jQuery UI 滑块?

Posted

技术标签:

【中文标题】如何使用 Selenide 读取/写入/更改 jQuery UI 滑块?【英文标题】:How to read/write/change jQuery UI slider with Selenide? 【发布时间】:2021-10-01 07:19:02 【问题描述】:

我想测试一下 jQuery UI 滑块如何

与 Selenide 一起使用。我试过了

$("#L3, #numeric-ui-slider-handle").sendKeys(Keys.ARROW_RIGHT);

但这失败了

Invalid element state: element not interactable

如果手动激活元素并按右箭头键就可以了。

要么我需要全局发送键,而不是针对元素,要么我需要以某种方式直接设置它的值。

【问题讨论】:

如果适用的话,我们也可以有 html 吗? @cruisepandey 它是 jQuery UI,它是使用带有 $("something").slider(...)javascript 创建的 如果只是测试滑块的位置,你可以看到style="left: 62%;在你移动滑块的时候已经更新了。 我觉得这可以通过动作类来完成。 @cruisepandey 假设我想将滑块移动到左侧的下一个位置,如何计算百分比?也许我可以以某种方式从 Selenide/Selenium 调用滑块对象的 value methid? 【参考方案1】:

这是移动滑块所需的一切,并使用% 对其进行测试,如下所示:-

@Test
public void testJQuerySlider() throws InterruptedException 
    driver = new ChromeDriver();
    driver.manage().window().maximize();
    driver.get("https://jqueryui.com/slider/");
    WebDriverWait wait = new WebDriverWait(driver, 30);
    Actions action = new Actions(driver);
    wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.className("demo-frame")));
    System.out.println("Inside iframe");
    WebElement slider = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("div#slider span")));
    slider.click();
    String sliderPosition = slider.getAttribute("style");
    System.out.println(sliderPosition);
    Thread.sleep(2000);
    for (int i = 0; i<=10; i++) 
        action.sendKeys(Keys.ARROW_RIGHT).build().perform();
        Thread.sleep(1000);
    
    WebElement newslider = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("div#slider span")));
    String newSliderPosition = newslider.getAttribute("style");
    System.out.println(newSliderPosition);

【讨论】:

以上是关于如何使用 Selenide 读取/写入/更改 jQuery UI 滑块?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ruby 读取和写入同一个 EXCEL 文件?

使用 FileSystemMonitoring 读取 app.config 中的更改并实时写入 app.config

用于 Gradle 测试的 Selenide 远程浏览器配置

selenide小白教程

POSIX 共享内存写入/读取

Pyspark 数据帧写入和读取更改架构