6

C# で Selenium2 WebDriver を使用しています

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.cshere ですPerform()。明らかにincludesを見ることができる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 に答える