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

时间:2019-03-08 23:08:23

标签: java selenium selenium-webdriver webdriver action

我正在尝试通过链接-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());
        }
    }

}

1 个答案:

答案 0 :(得分: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