【发布时间】:2015-08-20 15:37:06
【问题描述】:
我刚刚开始使用 selenium 网络驱动程序。我正在尝试使用它登录并导航/抓取。
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 如图所示:
非常感谢任何帮助,谢谢!
【问题讨论】:
-
使用等待而不是 driver.findElement
WebElement name = wait.until(ExpectedCondtions.visibilityOfElementLocated(By.id("LoginUsername")) -
帮我一个忙.. 在
driver.get()之后,做一个System.out.println(driver.getTitle())我不认为你在你认为的页面上 -
new WebDriverWait(driver, 4000);这是 4000 秒,顺便说一句。我想你不是这个意思吗? :) WebDriverWait -
确保您的元素实际显示。做类似的事情
-
.size 来检查元素是否在你的 DOM 中,然后 .isDisplayed 来确保它确实出现在屏幕上。