[英]How do I drag an object in an iframe using Selenium WebDriver with Java
我正在嘗試將對象從iframe中的一個位置拖到另一個位置。
但是我得到了movetargetoutofboundsexception。 如何找到可移動對象的坐標?
線程“主”中的異常
org.openqa.selenium.interactions.MoveTargetOutOfBoundsException
:給定的坐標(552,440)在文檔外部。 錯誤:MoveTargetOutOfBoundsError
:目標位置(MoveTargetOutOfBoundsError
)不在網頁上。
FirefoxProfile prof = new FirefoxProfile();
prof.setEnableNativeEvents(true);
WebDriver driver = new FirefoxDriver(prof);
driver.get("http://jqueryui.com/draggable/");
driver.manage().window().maximize();
// WebElement frame1 = driver.findElement(By.xpath("//*[@id='content']/iframe"));
// System.out.println(frame1.getLocation());
driver.switchTo().frame(0);
Actions act = new Actions(driver);
WebElement src = driver.findElement(By.xpath("//div[@id='draggable']"));
System.out.println(src.getText());
act.dragAndDropBy(src, 474, 360).build().perform();
您的代碼或多或少都可以。
唯一錯誤的是可能進行的移動量。 如果您將偏移量降低到100像素,那就可以了。 我發現最大值(在我的計算機的Firefox上)為572和338 px。
現在,這些數字不是隨機的。 如果打印出<iframe>
元素的大小,則會得到(584, 350)
。 如果在<iframe>
打印出draggable
元素的初始位置,則會得到(8, 8)
。 減去這些,您將得到576和342 px,與我們的經驗結果非常接近。 實際上,兩個方向上的差異完全相差4像素。 老實說,我不知道這4像素來自哪里。 可能是某種邊界。
只有一件事是確定的。 出於顯而易見的原因,WebDriver確保不會將元素拖出當前所在的框架。
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("http://jqueryui.com/draggable/");
WebElement iFrame = driver.findElement(By.tagName("iframe"));
System.out.println(iFrame.getSize());
driver.switchTo().frame(iFrame);
WebElement draggable = driver.findElement(By.id("draggable"));
System.out.println(draggable.getLocation());
new Actions(driver).dragAndDropBy(draggable, 572, 338).perform();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.