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

非常感谢您的回答

4

2 回答 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();
于 2013-03-07T14:36:48.210 回答
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");

参考:

于 2015-10-13T13:07:59.027 回答