Selenium not finidng element id

时间:2015-08-20 15:37:07

标签: java selenium

我刚开始使用selenium web-driver。我正在尝试使用它登录和导航/刮擦。

 public static void main(String[] args) {

    java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.OFF);
    java.util.logging.Logger.getLogger("org.apache.http").setLevel(java.util.logging.Level.OFF);

    WebDriver driver = new HtmlUnitDriver(BrowserVersion.CHROME);


    driver.get("my_Site_I_Reference");

    @SuppressWarnings("unused")
    WebDriverWait wait = new WebDriverWait(driver, 4000);

    WebElement name = driver.findElement(By.id("LoginUsername"));

    name.sendKeys("exampleName");

    name.submit();

    System.out.println("Page title is: " + driver.getTitle());
    driver.quit();
}

我正在使用上面的代码尝试在用户名字段中输入用户名,但我经常遇到此错误:

“org.openqa.selenium.NoSuchElementException:无法找到ID为:LoginUsername”的元素

我几乎可以肯定该元素名为LoginUsername,如图所示:enter image description here

非常感谢任何帮助,谢谢!

3 个答案:

答案 0 :(得分:0)

这仍然是猜测,但我怀疑该元素在iframe内。如果是这种情况,在查找元素之前切换到iframe

driver.switchTo().frame("frame_id_or_name"); 
WebElement name = driver.findElement(By.id("LoginUsername"));

答案 1 :(得分:0)

请详细分享HTML代码吗?同时,您也可以尝试将其更改为以下内容并分享您所看到的内容?

WebElement name = driver.findElement(By.xpath(“//*[@id="LoginUsername"]”)); 

OR

WebElement name = driver.findElement(By.xpath(“//input[@id="LoginUsername"]”)); 

答案 2 :(得分:0)

原来我默认禁用了Javascript我通过打印我的代码加载的页面源找到了这个

((HtmlUnitDriver) driver).setJavascriptEnabled(true);

启用后,selenium表现得像我预期的那样