我想使用WebDriver的KeyDown或SendKeys命令来自动执行此操作,但是到目前为止,我仍然无法执行此操作。这是我的代码,但是我尝试使用SendKeys代替KeyDown进行其他变体。我知道在页面上至少按下了一个键,因为该元素内的文本突出显示,模仿了控件或alt单击,并且双击也正确触发。 br />
我正在使用启用了本地事件并使用webdriver 2.20的最新版firefox。 />
Actions builder = new Actions(this.driver);
builder.KeyDown(Keys.LeftControl);
builder.KeyDown(Keys.LeftAlt);
builder.DoubleClick(BrowserHelper.GetElement(this.driver, locator, additionalLocatorPath));
builder.KeyUp(Keys.LeftControl);
builder.KeyUp(Keys.LeftAlt).Build().Perform();
#1 楼
我没有办法对此进行测试,如果我有足够的代表,我会对此发表评论,但我不是这样。。。指令吗?
Actions builder = new Actions(this.driver);
builder.KeyDown(Keys.LeftControl);
builder.KeyDown(Keys.LeftAlt);
builder.DoubleClick(BrowserHelper.GetElement(this.driver, locator, additionalLocatorPath));
builder.build().perform();
builder.KeyUp(Keys.LeftControl);
builder.KeyUp(Keys.LeftAlt).Build().Perform();
此外,我真的不认为这会有所作为,但是API指出:
参数:
theKey-Keys.SHIFT,Keys.ALT或Keys.CONTROL。如果提供的键都不是,则抛出IllegalArgumentException。
同时使用Keys.LeftControl和Keys.LeftAlt。
#2 楼
给元素单击作为参数时,让Click(element)工作时遇到了一些问题。我使用的解决方法是先使用MoveToElement(element),然后再使用没有参数的Click()。它似乎工作可靠。它可能也适用于DoubleClick(),但现在无法测试...// Get your element first
// I'm not familiar with the BrowserHelper extension so this line might not be correct...
IWebElement myElement = BrowserHelper.GetElement(this.driver, locator, additionalLocatorPath));
// Then perform the actions
Actions builder = new Actions(this.driver);
builder.MoveToElement(myElement);
builder.KeyDown(Keys.LeftControl);
builder.KeyDown(Keys.LeftAlt);
builder.DoubleClick();
builder.KeyUp(Keys.LeftControl);
builder.KeyUp(Keys.LeftAlt).Build().Perform();
builder.build().perform();
评论
单击我会遇到相同的问题。