如何在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();
非常感谢您的回答。
如何在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();
您忽略了构建器的返回值。请尝试:
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();
<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");
参考: