2017-07-11 113 views
0

使用Selenium W/Java綁定和ChromeDriver 2.3與最新的瀏覽器上安裝硒/ Java的:拖放操作不工作的不可見元素

我後我目前難倒了足夠多的時間,試圖找到一個解決方案。我正在嘗試將元素拖放到另一個元素。唯一的缺點是我需要移動到的元素目標只有在移動源元素後纔可見。有什麼建議?

所以這裏的源元素的截圖,我點擊並按住,然後拖動它公開,我可以降得兩個選項:

Element that is the source

因此,正如我按住鼠標拖動只是一小部分,降目標變得可見,每下面的截圖:

Targets visible once mouse is dragged with source

下面是最新的代碼片段我試過,我認爲應該做到這一點,但你們沒有任何反應,並繼續進入Thread.sleep(),它僅用於觀察目的。這些假設WebDriverWait的健康情況和webdriver的:

driverWait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='user-info ng-binding'][text()='Sample Text']")));   
driverWait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='user-info ng-binding'][text()='Sample Text']"))); 
source = driver.findElement(By.xpath("//div[@class='user-info ng-binding'][text()='Sample Text']")); 

//move to element, click and hold, and then move it to expose the available options 
actions.moveToElement(source).clickAndHold().pause(Duration.ofSeconds(1)).moveByOffset(10, 10).pause(Duration.ofSeconds(1)).build().perform(); 
Thread.sleep(10000); 

這樣的想法背後是單擊並按住源,將它一點點地顯示目標,然後找到目標,並用行動.release()將目標移動到源代碼上,但是當我調試它時,它不會對元素執行任何操作,直接進入Thread.sleep()。我讀過大量的錯誤。任何建議將不勝感激。

+0

看看https://stackoverflow.com/a/45037227/8020699它看起來像有是已知的硒 – TitusLucretius

+0

拖放問題,我已經看到線程。我不認爲我的問題與此有關,因爲我無法進行傳統的拖放操作,因爲元素在源移動之前不可見。 – potatocode

+0

我目前正在嘗試從這裏的機器人/硒拖放解決方法的一些組合:https://github.com/SeleniumHQ/selenium-google-code-issue-archive/issues/3604我會更新,如果我做得到任何結果 – potatocode

回答

0

我知道這是一個老問題,但我正在尋找解決方案,但最終我只是讓隱藏區域可見。我知道這並不理想,但似乎工作。

JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("arguments[0].setAttribute('style', 'display:block')", targetElement); 
+0

這會設置一個異常,因爲驅動程序無法找到該元素? – potatocode