Selenium无法在html页面中找到任何元素

时间:2013-01-15 03:07:24

标签: java selenium selenium-webdriver

我正在尝试制作一个小型的Java应用。可以登录我的大学门户网站,我在下面的代码中使用了Selenium:

 //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的元素。无论我使用的(By)类的方法是什么,我也得到相同的结果   但是,当我将目标更改为任何链接时(例如:“http://www.google.com”或“http://www.facebook.com”),我在输入ArrayList中获取元素(tagName的所有元素) (输入)在目标html页面中。)任何人都可以告诉我这是什么问题,如何解决?提前感谢..

1 个答案:

答案 0 :(得分:2)

您找到带标签输入的零元素的原因是所有元素都位于帧标记内。 Selenium能够看到当前窗口,并且在框架标签内定义的所有元素(即在框架集内)都是隐藏的。

要查看首先需要切换框架的元素,以便selenium可以控制目标框架而不是外部窗口。试试这个

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