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

标签 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());
        }
    }

}

最佳答案

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

  • 代码块:

    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

关于java - 如何通过 Java 使用 Selenium 调整元素大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55072243/

相关文章:

.net - 在 .Net 中使用 PhantomJS selenium webdriver 时不执行 Element.Click

python - Selenium 错误 : element not visible (different behaviour on two computers)

java - 使用 Selenium 和 java 查找 href 链接

java - 不能在运行时在 Java 中向下转换

java - 无法在 Android x86_64 上安装 JavaFX 应用程序

java - 减少在 selenium 上的截图时间

selenium - 通过 Selenium Webdriver 处理 id 一直在变化的元素

selenium - 如何使用 selenium WebDriver 捕获全页屏幕截图

java - android java socket.io 不会向 nodejs 服务器发出任何事件

java.lang.ClassNotFoundException : com. mysql.jdbc.Driver。一个项目中有两个程序,一个可以运行,另一个不能运行