簡體   English   中英

如何使用帶有Java的Selenium WebDriver在iframe中拖動對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM