6

我将 Selenium2 WebDriver 与 C# 一起使用

Actions.Build - 返回IAction可用于执行操作的组合。(IActions 有一个 Perform 方法来执行动作) Actions.Perform - 执行当前构建的动作。

在大多数示例中,使用这样的操作:

new Actions(IWebDriverObj).actions...Build().Perform()

但这也有效

new Actions(IWebDriverObj).actions...Perform()  //no Build before Perform

是否有必要在 Perform() 或 Build() 之前使用 Build() 仅出于某种兼容性目的?

提前感谢您的答案

4

2 回答 2

13

永远记住 Selenium 是开源的。

的来源在WebDriver/Interactions/Actions.cs这里显然你可以看到Perform()包含Build(),所以答案是否定的,你不需要在执行之前构建,除非你想IAction在不执行的情况下传递构建。

/// <summary>
/// Builds the sequence of actions.
/// </summary>
/// <returns>A composite <see cref="IAction"/> which can be used to perform the actions.</returns>
public IAction Build()
{
    CompositeAction toReturn = this.action;
    this.action = new CompositeAction();
    return toReturn;
}

/// <summary>
/// Performs the currently built action.
/// </summary>
public void Perform()
{
    this.Build().Perform();
}

另外,对于其他阅读这篇文章的人:

Java 绑定:build()包含在perform(). 来源: interactions/Actions.java

Ruby/Python:只有perform,没有这种东西叫做build. 来源:action_chains.pyaction_builder.rb

于 2013-05-08T10:15:34.047 回答
2

实际上,其中.perform()包括一个.build().

所以你只能写:new Actions(IWebDriverObj).actions....perform()

于 2013-05-08T09:54:28.227 回答