2017-02-09 1 views
0

私はプログラミングの初心者ですが、Seleniumの自動化に取り組んでいます。 では、WebDriverChromeDriverがクラスであり、ChromeDriverWebDriverを実装しているため、というオブジェクトを置くための参照変数としてWebDriverが使用されています。webelement要素のdriver.findelementby(By.id( ""))= driver.findelementby(By.id( ""))

しかしWebElement element=driver.findelementby(By.id("something"))あるもので、WebElementはクラスですが、右側には、それは私が想定しています、方法であると思われ、FindElementChromedriverクラスのメソッドです。参照変数は、上記のようなクラスのオブジェクトの代わりにメソッドに等しいとみなされます。これはどのように可能ですか?このコンセプトは何と呼ばれていますか?上記のパラの概念へのリンクはここにありますか?

+0

http://seleniumhq.github.io/selenium/docs/api/java/ – Guy

答えて

0

通常、OOPメソッドでは、さまざまな型の値が返されます。時にはメソッドは何も返すことができません。 Javaでは、voidと注釈が付けられています。

idという名前のクラスByの静的メソッドを呼び出しています。このメソッドから返されるものは、によって実装されるWebDriverインターフェイスで宣言されたメソッドfindeElementByの引数になります。このメソッドは戻り値の型としてWebElementを宣言します。

オブジェクト指向プログラミング(OOP)について詳しくは、この概念を理解してください。ここでは役に立つリソースを見つけることができます:

https://docs.oracle.com/javase/tutorial/java/concepts/ - これはjavaに関連しています。 https://www3.ntu.edu.sg/home/ehchua/programming/java/J3a_OOPBasics.html - ここにあなたが代入式(のようなa = b)でより多くの例

3

を持って、左側(a)は変数で、右側(bは)表現です。

評価されたときに、式は何らかの型の値(またはnull)を持っています。 1のようなリテラルは式ですが、1 + 1 + 1もあります。これは、タイプがintの値に評価されます。

あなたがWebDriver driver = new ChromeDriver();が表示された場合、それは技術的に変数宣言声明です。あなたの分析は大まかですが、それを知ることは重要です:

  • ここでは新しい変数を宣言しています。新しい変数を宣言するには、ステートメントでなければなりません(;に注意してください)。あなたは、単純にかかわらず、式の中の既存の変数を割り当てることができます:

    driver = new ChromeDriver() 
    
  • あなたが表現として全体new ChromeDriver()を読んでする必要があります。それはあなたが作成するインスタンスがChromeDriverなりクラスインスタンス生成式、です(サブクラスではない)。

WebElement element=driver.findelementby(By.id("something"));それは右辺の表現のちょうど別のタイプですが、実際には違いはありません:それはメソッド呼出し式です。 (それはWebDriverのサブクラスとして、あまりにもChromeDriverで存在するであろうが)あなたは、上記のようにdriverを宣言したと仮定すると、

  • findelementbyWebDriverクラスのメソッドではなく、ChromeDriverです。 "WebElement element=driver.findElement(By.id("something"))"

    "By.id("something")" で

0

:ロケータ:ロケータは、GUI要素(ボックスなどをチェックし、テキストボックス、ボタンを言って)そのニーズが上で動作するセレンを伝えます。したがって、 "id"を使用して "something"要素が見つかります。

"findElement(By.id("something"))":方法:WebDriverの要素の検索は、 "findElement(By.locator())"メソッドを使用して行います。

WebElement element」:オブジェクトの宣言:代わりに、長い使用しての 『driver.findElementは(By.locator())』構文あなたが特定の要素にアクセスするたびに、我々はそれをWebElementオブジェクトをインスタンス化することができます。 WebElementクラスは、 "org.openqa.selenium。*"パッケージに含まれています。

FYIのWebDriverは、ChromeやFirefoxなどのさまざまなブラウザでテストを実行できるWebオートメーションフレームワークです。 WebDriverでは、テストスクリプトの作成にプログラミング言語を使用することもできます。

0

あなたの質問は正しいですが、あなたの前提が間違っています。 WebDriverおよびWebElementはクラスではありません。それらはChromeDriverクラスによって実装されたインターフェイスです。

findElementは、WebElementインターフェイスを返すWebDriverクラスで宣言されたメソッドです。

WebDriverおよびWebElementインターフェイスがRemoteWebDriverで実装され、RemoteWebDriverがさらにChromeDriverで拡張されています。

希望に役立ちます!

関連する問題