2013-03-07 62 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"); 

參考:

當我使用