2013-01-15 2 views
0

작은 자바 응용 프로그램을 만들려고합니다. 그게 내 대학 포털에 로그인 할 수 있습니다, 나는 다음과 같은 코드에서 셀레늄을 사용 :셀렌이 html 페이지에서 아무 요소도 찾을 수 없습니다.

//some import statements 
public class Portal{ 
    public Portal(){ 
      File file = new File("C:/chromedriver.exe"); 
      System.setProperty("webdriver.chrome.driver", file.getAbsolutePath()); 

      HtmlUnitDriver driver = new HtmlUnitDriver(); 
      String target = "http://portal.kfupm.edu.sa/cp/home/loginf"; 
      driver.get(target); 

      ArrayList <WebElement> inputs = (ArrayList<WebElement>) driver.findElements(By.tagName("input")); 
      System.out.println(inputs.size()); 
      for(WebElement input : inputs){ 
       System.out.println(input.getAttribute("value") + " " + input.getAttribute("name")); 

      // to insure the link is displaying something 
       ChromeDriver driver1 = new ChromeDriver(); 
       driver1.get(driver.getCurrentUrl()); 

     } 
     public static void main(String [] args){ 
      new Portal(); 
     } 

} 

나는이 목표 (내 대학 포털을) 내가 inputs.size 수() = 0 사용할 때 문제가; 그러나, 나는 (input) tagName을 가진 요소들이있을 것이라고 확신한다. 또한 나는 (내가 쓴) 수업의 방법이 무엇이든간에 똑같은 답을 얻는다.
그러나 대상을 임의의 링크 (예 : "http://www.google.com"또는 "http://www.facebook.com")로 변경하면 입력 요소 ArrayList (모든 요소 (대상 HTML 페이지에있는 tagName (입력)). 어떤 신체가 문제를 말해 줄 수 있고 어떻게 해결할 수 있습니까? 미리 감사드립니다.

답변

2

태그 입력이있는 요소가없는 이유는 무엇입니까? Selenium은 현재 윈도우를 볼 수 있으며 프레임 태그 안에 정의 된 모든 요소 (예 : 프레임 세트 내부)는 보이지 않습니다.

요소를 보려면 프레임을 먼저 전환해야하므로 셀레늄은 대상 프레임 내부에서 제어 할 수 있고 외부에서는 제어 할 수 없습니다. 창문. 완벽이

driver.swtichTo().frame(0); // this will move selenium control inside first frame 
+0

작품을 시도, 그것은 한 HtmlUnitDriver가 이용되지 않는 한 잘 작동 – mohabh

+0

... 대단히 감사합니다. 그것을 사용할 때 모든 요소에 입력 태그가 지정되지는 않습니다. 1 요소 만 가져오고 일부 다른 로케이터에 대해서는 HtmlUnitDriver를 사용할 때 요소가 없지만 ChromeDriver를 사용하여 요소를 가져옵니다. HtmlUnitDriver와 ChromeDriver 사이의 전환 드라이버에 차이가 있습니까? 당신의 도움과 시간에 정말 감사드립니다. – mohabh

+0

바보처럼 보일지 모르지만 문제는 setJavascriptEnabled를 잊어 버렸기 때문입니다. 이제 해결되었습니다 :) – mohabh

관련 문제