我正在尝试通过链接 - 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
浏览器快照:
关于java - 如何通过 Java 使用 Selenium 调整元素大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55072243/