Selenium WebDriver - 同时按下键盘与鼠标点击 C#

3

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

以下方法不起作用。

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

非常感谢您的回答。

当我使用KeyDown时,它也不起作用。 - user2080814
你能按Ctrl + Enter键吗?(按Enter模拟点击) - StaleElementException
我认为Ctrl + Space是用于多选的。 - Jay Byford-Rew
2个回答

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");

参考:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接