如何使用Selenium通过Java调整元素大小?

问题描述 投票:2回答:1

我试图通过链接-http://jqueryui.com/resizable/自动化Selenium中的“可实现的概念”(拖放)。我收到错误:

invalid selector: Unable to locate an element with the xpath expression //div[contains(@class.'demo-frame')].

如果还有其他方式代表XPATH,请告诉我吗?下面是我的相同代码。提前致谢。

public class ResizeExample {
    WebDriver driver;

    @Test
    public void testToResizeElement() {

        driver = new FirefoxDriver();
        driver.manage().window().maximize();
        driver.navigate().to("http://jqueryui.com/resizable/");
        WebDriverWait wait = new WebDriverWait(driver, 5);
        wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector(".demo-frame")));
        WebElement resizeableElement = driver.findElement(By.cssSelector(".ui-resizable-handle.ui-resizable-se.ui-icon.ui-icon-gripsmall-diagonal-se"));
        resize(resizeableElement, 50, 50);
    }

    public void resize(WebElement elementToResize, int xOffset, int yOffset) {
        try {
            if (elementToResize.isDisplayed()) {
                Actions action = new Actions(driver);
                action.clickAndHold(elementToResize).moveByOffset(xOffset, yOffset).release().build().perform();
            } else {
                System.out.println("Element was not displayed to drag");
            }
        } catch (StaleElementReferenceException e) {
            System.out.println("Element with " + elementToResize + "is not attached to the page document "  + e.getStackTrace());
        } catch (NoSuchElementException e) {
            System.out.println("Element " + elementToResize + " was not found in DOM " + e.getStackTrace());
        } catch (Exception e) {
            System.out.println("Unable to resize" + elementToResize + " - " + e.getStackTrace());
        }
    }

}
java selenium selenium-webdriver webdriver action
1个回答
2
投票

要通过Selenium在网页http://jqueryui.com/resizable/中自动化可实现的概念(拖放),您可以使用以下解决方案:

  • 代码块: System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe"); WebDriver driver=new FirefoxDriver(); driver.get("http://jqueryui.com/resizable/"); driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@class='demo-frame']"))); WebElement target = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se']"))); //dragAndDropBy(WebElement source, int xOffset, int yOffset) //status: WORKS new Actions(driver).dragAndDropBy(target, 50, 50).build().perform(); System.out.println("Resizing of element Completed");
  • 控制台输出: Resizing of element Completed
  • 浏览器快照:

jQuery_resizable

© www.soinside.com 2019 - 2024. All rights reserved.