我正在为工作中的站点编写自动化测试,我们有某些屏幕,当我们发送一组特定的击键时,页面的一部分将变得可见,并允许我们查看与定价或文档有关的信息。
我想使用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();