如何在没有 name/id 的 IFRAME 中移动滑块?

How to move Slider in an IFRAME that doesn't have a name/id?

我无法移动 IFRAME 部分中的滑块:https://jqueryui.com/slider/

此页面上的 IFRAME 没有名称或 ID。

代码:

public class MovingSlider {
    public static void main(String[] args) 
    {
        WebDriverManager.chromedriver().setup();
        WebDriver driver = new ChromeDriver();
        driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(10));
        driver.get("https://jqueryui.com/slider/");
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
        driver.switchTo().frame(1);
        WebElement slider = driver.findElement(By.xpath("//div[@id = 'slider']/span"));
        new Actions(driver).dragAndDropBy(slider, 400,0).click();
    }
}

问题是 dom 仅包含一个索引为“0”的帧,而您试图切换到实际上不存在的索引“1”帧。

以下是适合您的代码片段。

WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(10));
driver.get("https://jqueryui.com/slider/");
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
Integer size = driver.findElements(By.tagName("iframe")).size();
System.out.println("Total iFrame is " + size);
driver.switchTo().frame(0);
WebElement slider = driver.findElement(By.xpath("//div[@id = 'slider']/span"));
// WebElement slider = driver.findElement(By.cssSelector("#slider > span"));
new Actions(driver).dragAndDropBy(slider, 400, 0).build().perform();