2016-06-07 86 views
0

我已經看到此線程here並且當我嘗試使用sendKeys(Keys.ARROW_DOWN)而不是沿着上下文菜單移動時,頁面會非常快速地向下滾動。我怎樣才能避免這種情況?我不確定如何等待上下文菜單出現,但我可以等待一個元素出現。Selenium選擇選項之前右鍵單擊向下滑動

這裏的功能:

public static void rightClickCopyImageLink(WebElement image){ 
    Actions copying = new Actions(driver); 

    copying.contextClick(image).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN). 
    sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN). 
    sendKeys(Keys.RETURN).build().perform(); 

} 
+0

你能與我們分享您的代碼? – RemcoW

+0

當然,不是很複雜的代碼,只是學習硒 –

+0

嗯,對不起,我沒有看到你的代碼有什麼問題,我也不能重現它。 – RemcoW

回答

0

嘗試使用contextClick獨立於其他行動。

copying.contextClick(image).build().perform(); 
copying.sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN). 
sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN). 
sendKeys(Keys.RETURN).build().perform(); 

如果你想,直到contextClick行動執行後出現的上下文菜單,您可以添加等待。

+0

感謝您的回覆,這是我第一次嘗試。但是,確實如此。 –

+0

我會添加一個等待,看看是否有效。最乾淨的方法提示?除了時間之外還有什麼可以讓我等待嗎? –

+0

然後控件不在上下文菜單中。在應用程序上手動嘗試如果您在上下文單擊後按下箭頭,它的行爲如何。如果它按預期工作,那麼您應該等到上下文菜單出現並獲取控件或一些如何使上下文菜單獲得控件。 –

0

首先肯定的是,圖像元件位於正確...

我認爲上右擊一些子菜單出現,請右鍵單擊配有獨立行動鏈。 然後等待元素出現。

一旦出現,移動到元素並按下箭頭。

骨架代碼可能是:

public static void rightClickCopyImageLink(WebElement image){ 
     Actions rightClick= new Actions(driver); 
     rightClick.contextClick(image).build().perform(); 
     //Wait for submenu to appear waituntil(submenu to be located) 
     //Move to located submenu <this is important> 

     Actions MoveDownSubmenu = new Actions(driver); 
    MoveToRightClickSubmenu.sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).build().perform(); 


    } 
+0

我已經嘗試過在兩個動作之間進行分割,也不起作用。謝謝你的想法。任何其他想法? –

+0

是否移動到元素(第一個子菜單)..?因爲我面臨同樣的問題... – theRoot

+0

這不是問題。我已經把它跟蹤下來了 - 這是一個鉻webdriver的問題.... https://bugs.chromium.org/p/chromedriver/issues/detail?id = 1003 –

相關問題