2010-12-09 11 views
4

스칼라 2.8.1, SBT 0.7.4, WebDriver HTMLUnit 2.6. SBT 콘솔 REPL에서 ... 스칼라 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]의 탭 완성을 설명하기 위해 저에 의해 추가)에 REPL은 findElementByXPath(String):WebElemente에 있는지 알려줍니다,하지만 난 호출 할 때 찾지 못했습니다. 뭐라 구요?

답변

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 = [email protected] 

scala> x. 

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

그래서, m2이 보호되어 있기 때문에 당신이 그것을 사용할 수없는 경우에도 나타납니다, 그리고 m4은 (주조 또는 일치하지 않고)를 사용할 수없는 경우에도 나타난다 x의 유형이 X이고 m4이 클래스 Y (실제는 class이 아니고 type이 아닌 x)입니다.

다음 질문 : 이것은 의도적입니까? 음, 사실은 아니지만 문제를 해결하는 것이 더 중요합니다. 패치는 물론 환영합니다. :-)

+0

소스를 최소한보고 싶습니다. 여기에서 어디로 가야합니까 ... http://lampsvn.epfl.ch/trac/scala/browser/scala/trunk – Synesso

+0

@ 죄송합니다. 귀하의 의견을 이해할 수 없습니다. 스칼라 소스를 말하는 겁니까? 거기에서'src'로 가면, Scala의 다양한 부분을 찾을 수 있습니다 : 컴파일러, 라이브러리 등 이제 REPL이 어디에 있는지 잘 모르겠습니다. 컴파일러 경로에는'nsc' 디렉토리가 있습니다. 그것의'interactive '와'interpreter' 서브 디렉토리는'nsc' 디렉토리 자체의 일부 파일뿐만 아니라 특히 관련이 있습니다. –

+0

감사합니다. 막연하게해서 유감스럽게 생각합니다. "패치 환영"에 대한 응답이었습니다. 의미하지는 않겠지 만, 소스를 검토하여 헤드 또는 테일을 만들 수 있는지 확인하는 데 관심이 있습니다. 빨리 살펴보고, def type으로 추측됩니다. 멤버 http://lampsvn.epfl.ch/svn-repos/scala/scala/branches/scala-detach/src/compiler/scala/tools/nsc/interactive/ Global.scala - 나는 확신 할 수 없다. – Synesso

3

org.openqa.selenium.WebElement에는 이러한 메서드가 없지만 org.openqa.selenium.htmlunit.HtmlUnitWebElement과 같이 구현하는 클래스는 이러한 메서드가 없습니다. e클래스 방법,하지만 변수의 유형 org.openqa.selenium.WebElement, 그래서이 방법이 실제로 호출 할 수 없습니다;

내 추측 탭 완성은 모든 공공 (다니엘의 답변을 참조하거나 보호)를 보여주고 있다는 것입니다 .

+0

예, e.findElement (By.xpath ("/ td ​​[0]"))를 사용해야합니다. –