Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Selenium无法在html页面中找到任何元素_Java_Selenium_Selenium Webdriver - Fatal编程技术网

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

Java Selenium无法在html页面中找到任何元素,java,selenium,selenium-webdriver,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.getAbsolute

我正在尝试制作一个小型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();
      }

 }
//一些导入语句
公共类门户{
公共门户(){
File File=新文件(“C:/chromedriver.exe”);
System.setProperty(“webdriver.chrome.driver”,file.getAbsolutePath());
HtmlUnitDriver=新的HtmlUnitDriver();
字符串目标=”http://portal.kfupm.edu.sa/cp/home/loginf";
driver.get(目标);
ArrayList输入=(ArrayList)driver.findElements(按.tagName(“输入”));
System.out.println(inputs.size());
for(WebElement输入:输入){
System.out.println(input.getAttribute(“值”)+“”+input.getAttribute(“名称”);
//以确保链接正在显示某些内容
ChromeDriver 1=新的ChromeDriver();
获取(driver.getCurrentUrl());
}
公共静态void main(字符串[]args){
新门户();
}
}
问题是,当我使用这个目标(我的大学门户)时,我得到的是输入。size()=0;尽管如此,我确信有带有(输入)标记名的元素。无论我使用的(按)类的方法是什么,我都会得到相同的结果。

但是,当我将目标更改为任何链接时(例如:http://www.google.com“或”http://www.facebook.com,我在inputs ArrayList中获取元素(目标html页面中标记名(input)的所有元素)。任何人都可以告诉我问题是什么以及如何解决问题吗?提前感谢。

您发现零元素的标记输入的原因是所有元素都位于框架标记内。Selenium能够查看当前窗口以及框架标记内定义的所有元素(即,在框架集内)你看不见它

要查看元素,您需要首先切换帧,以便selenium可以在目标帧内而不是在外部窗口中进行控制

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

只要不使用HtmlUnitDriver,它就可以正常工作。当我使用它时,我不会通过输入标记所有元素。我只得到1个元素,而对于其他一些定位器,当我使用HtmlUnitDriver时,我没有得到任何元素,但我使用ChromeDriver获得它们。在HtmlUnitDriver和ChromeDriver之间切换驱动程序是否有区别。我真的很感激你您的帮助和您的时间。可能看起来很愚蠢,但问题是因为我忘记将JavaScriptEnabled设置为true。现在问题解决了:)