2016-06-07 70 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 –

相关问题