簡體   English   中英

Selenium - Chrome 中的拖放問題

[英]Selenium - Drag and Drop issue in Chrome

有一個站點可以練習: http://the-internet.herokuapp.com/drag_and_drop

如果試圖在 Chrome 中執行簡單的拖放操作。 但是什么也沒有發生(實際上只選擇了一列然后什么都沒有)

我找到了這樣的元素

By COLUMN_A_LOCATOR = By.xpath("//*/header[contains(text(),'A')]/..");
By COLUMN_B_LOCATOR = By.xpath("//*/header[contains(text(),'B')]/..");

並嘗試像這樣執行拖放

Actions actions = new Actions(driver);

actions.clickAndHold(driver.findElement(COLUMN_B_LOCATOR)).moveToElement(driver.findElement(COLUMN_A_LOCATOR)).release().perform();

像這樣

actions.dragAndDrop(driver.findElement(COLUMN_B_LOCATOR),driver.findElement(COLUMN_A_LOCATOR)).perform();

沒事了。 另外我注意到這個網站上的列類名是動態的,也許這就是我不能拖放的原因?

還纏繞了這個https://github.com/SeleniumHQ/selenium/issues/3269 - 也許這仍然是一件事

public void move_elements(WebElement source,WebElement target) throws InterruptedException
    {

        final String java_script =
                "var src=arguments[0],tgt=arguments[1];var dataTransfer={dropEffe" +
                                "ct:'',effectAllowed:'all',files:[],items:{},types:[],setData:fun" +
                                "ction(format,data){this.items[format]=data;this.types.append(for" +
                                "mat);},getData:function(format){return this.items[format];},clea" +
                                "rData:function(format){}};var emit=function(event,target){var ev" +
                                "t=document.createEvent('Event');evt.initEvent(event,true,false);" +
                                "evt.dataTransfer=dataTransfer;target.dispatchEvent(evt);};emit('" +
                                "dragstart',src);emit('dragenter',tgt);emit('dragover',tgt);emit(" +
                                "'drop',tgt);emit('dragend',src);";

                        ((JavascriptExecutor)driver).executeScript(java_script, source, target);

    }

使用 javascript 拖放即可。 但我不知道為什么行動 class 對此不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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