2013-03-07 45 views
2

如何在同一时间在硒WebDriver 2中执行两个操作? 我需要按住CTRL并点击链接。我希望在C#中看到一些解决方案。Selenium WebDriver - KeyPress同时点击C#

这不起作用。

Actions builder = new Actions(_driver); 
builder.SendKeys(Keys.Control).Click(link).KeyUp(Keys.Control); 
IAction multiple = builder.Build(); 
multiple.Perform(); 

非常感谢答案

+0

的KeyDown它是不是工作压力太大 – user2080814 2013-03-07 14:23:30

+0

你能做到按Ctrl + Enter键? (输入以模拟点击) – StaleElementException 2013-03-07 15:20:11

+0

我认为Ctrl + Space是用于多选 – kernowcode 2014-10-07 07:55:43

回答

1

你忽略了你的生成器的返回值。尝试:

Actions builder = new Actions(_driver); 
builder = builder.KeyDown(Keys.Control).Click(link).KeyUp(Keys.Control); 
IAction multiple = builder.Build(); 
multiple.Perform(); 

或这甚至相当于一个速记:

new Actions(_driver) 
    .KeyDown(Keys.Control) 
    .Click(link) 
    .KeyUp(Keys.Control) 
    .Perform(); 
0

如果你不能得到Actions工作,你可以摆脱困境,并调用JavaScript(或jQuery的,因为在我的例子这里),调用Ctrl-Click

示例HTML片段(你试图自动化的测试)...

<script type='text/javascript'> 
    function myClick(e) {if(e.ctrlKey) {alert('ctrl+click');}} 
</script> 

...

<img id='myElement' onclick='myClick();' src='abc.gif' /> 

实例C#电话:

public void ExecuteJs(string javascript) 
{ 
    var js = Browser.WebDriver as IJavaScriptExecutor; 
    if (js != null) js.ExecuteScript(javascript); 
} 

public void CtrlClickElement(string elementId) 
{ 
    var script = string.Format("var e=jQuery.Event('click');e.ctrlKey=true;$('#{0}').trigger(e);", elementId); 
    ExecuteJs(script); 
} 

...

CtrlClickElement("myElement"); 

参考:

当我使用