找不到ID的元素

时间:2019-09-11 03:20:06

标签: java selenium-webdriver xpath css-selectors webdriverwait

我正在这样做:

WebElement userName = driver.findElement(By.id("username"));

但是我得到了

Unable to locate element: #username

我的DOM看起来像这样:

<input type="text" name="username" id="username" class="u-leader-m10"
required="required" tabindex="1">

从外观上看,一切都很好。那么,有哪些领域可以调查此失败? 乐意提供更多信息。我只是不知道有什么意义。

编辑:我尝试使用“名称”而不是“ id”,但它仍在工作-仍然感到困惑!

2 个答案:

答案 0 :(得分:0)

尝试以下一项

WebElement userName = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.id("username")));

答案 1 :(得分:0)

显然,使用id属性的代码块没有任何问题,但是在HTML DOM中定位元素的最佳策略将在很大程度上取决于{{ 3}}以及您希望在元素上执行的操作。

话虽如此,看来该元素是<input>元素,并且向前移动您将调用click()sendKeys()并实现必须诱使 WebDriverWait < / em>用作elementToBeClickable(),则可以使用以下任一DOM Tree

  • cssSelector

    WebElement userName = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input#username[name='username']")));
    
  • xpath

    WebElement userName = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='username' and @name='username']")));