java - Selenium 无法定位 html 页面中的任何元素

标签 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;不过,我确信存在带有(输入)tagName 的元素。而且,无论我使用的(By)类的方法是什么,我都会得到相同的结果。
但是,当我将目标更改为任何链接(例如: "http://www.google.com"或 "http://www.facebook.com"时,我会在输入 ArrayList 中获取元素( tagName 的所有元素) (输入)位于目标 html 页面中)。任何人都可以告诉我问题是什么以及如何解决它吗?提前致谢..

最佳答案

您在标签输入中找到零个元素的原因是所有元素都位于框架标签内。 Selenium 能够看到当前窗口,并且框架标签内定义的所有元素(即框架集内)对其不可见。

要查看该元素,您需要先切换框架,以便 selenium 能够控制目标框架内部而不是外部窗口。试试这个

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

关于java - Selenium 无法定位 html 页面中的任何元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14330546/

相关文章:

Maven/Junit 并行执行 - Cucumber-JVM v4.0.0

java - 如何读取style=“显示: block; element value using x-path in selenium web driver?”

selenium - @AfterTest Selenium 注释在所有 @Test 执行之前执行

r - 检查 RSelenium 中的对话框

java - 更改 Android 中缓存文件的外观

java - 日期-姓名 id 转换

java - 条件延迟处理

java - GWT,Smart GWT,GWT-ext对比

testing - 如何使用 Selenium 强制执行 onClick 事件?

selenium - 下载以前版本的 Selenium jar ?