4

Scala 2.8.1、SBT 0.7.4、WebDriver HTMLUnit 2.6。SBT コンソールで REPL ...

 scala> e.findElement[tab]

findElement                     findElementById                 findElementByLinkText           findElementByPartialLinkText
findElementByTagName            findElementByXPath              findElements                    findElementsById
findElementsByLinkText          findElementsByPartialLinkText   findElementsByTagName           findElementsByXPath

scala> e.findElementByXPath[tab]

def findElementByXPath(String): org.openqa.selenium.WebElement

scala> e.findElementByXPath("/td[0]")
<console>:12: error: value findElementByXPath is not a member of org.openqa.selenium.WebElement
       e.findElementByXPath("/td[0]")
         ^

( [tab]s は、タブ補完を説明する目的で私が追加したものです)

したがって、REPL は にfindElementByXPath(String):WebElement存在することを教えてくれますeが、呼び出すと見つかりません。何を与える?

4

2 に答える 2

3

ここを参照してください:

scala> class X {
     |   def m1 = 1
     |   protected def m2 = 2
     |   private def m3 = 3
     | }
defined class X

scala> class Y extends X {
     |   def m4 = 4
     | }
defined class Y

scala> val x: X = new Y
x: X = Y@12524b0

scala> x.

asInstanceOf   equals         getClass       hashCode       isInstanceOf   m1             m2             m4
notify         notifyAll      toString       wait

したがって、m2保護されているために使用できない場合でも表示され、のタイプがであり、クラスであるm4ため(キャストまたはマッチングなしで)使用できない場合でも表示されます(実際の、ではなく、の)。xXm4Yclasstypex

次の質問:これは意図的なものですか?そうではありませんが、修正する優先度の高いものがあります。もちろん、パッチは大歓迎です。:-)

于 2010-12-09T10:41:10.023 に答える
3

org.openqa.selenium.WebElementにはこれらのメソッドがありませんが、それを実装するクラスはそうであることに注意してorg.openqa.selenium.htmlunit.HtmlUnitWebElementください。

私の最善の推測では、タブ補完はe's classのすべての public (または protected; Daniel の回答を参照) メソッドを表示しますが、変数の型はorg.openqa.selenium.WebElementであるため、これらのメソッドを実際に呼び出すことはできません。

于 2010-12-09T07:56:30.520 に答える