Selenium webdriver 按名称FindElement失败,但按Xpath成功?

Selenium webdriver 按名称FindElement失败,但按Xpath成功?,selenium-webdriver,junit4,Selenium Webdriver,Junit4,这对我来说毫无意义。以下是我尝试与之交互的页面元素的源代码: <li> <input type="checkbox" name="includeStudents" value="true" checked /> <span style="cursor: pointer;" onclick="javascript:checkBoxSingleClick(document.userSearchForm.includeStudents

这对我来说毫无意义。以下是我尝试与之交互的页面元素的源代码:

<li>
    <input type="checkbox" name="includeStudents" value="true" checked />
     <span style="cursor: pointer;"
          onclick="javascript:checkBoxSingleClick(document.userSearchForm.includeStudents);"
          ondblclick="javascript:userTypeDoubleClick(document.userSearchForm, document.userSearchForm.includeStudents);">
     <strong><u>S</u>tudent</strong>
       </span>
 </li>
我添加了等待,以确认这不仅仅是一个时间问题。使用by.name时,我在等待元素可见性时遇到超时错误


我错过了什么

我可能完全不在这里,但是您是否检查过该元素是否不在webdrivers实例的父级中?例如,如果您的代码位于尚未进入的框架内,那么它将无法定位Xpath。它将抛出一个错误,即不存在任何元素,并且webdriver在x秒后超时

driver.switchTo().frame("MyElementFrame");    
driver.findElement(By.xpath("//*[@id='ed-userSearchCheckboxUserTypeFilter']/li[2]/input")).click();

您确定这是页面上唯一具有此名称的元素吗?可以尝试执行以下操作以获得更合适的详细信息吗?driver.findElement(By.id(“ed userSearchCheckboxUserTypeFilter”)).findElement(By.name(“includeStudents”)。单击();有趣-我试过你的台词,效果很好-太好了。我现在很好奇——根据你的第一个评论,我假设有另一个元素使用这个名称(也是我最初的想法)。但是在页面上搜索源代码并没有找到一个。而且,“wait”超时(对我来说)表示没有找到具有该名称的元素——即使页面已完全加载——这很奇怪。因为是的,我的想法确实是这样的。您可以在该定位器上执行findElements()并对其进行计数,但不确定
  • 元素是否存在问题。您可以随时加入freenode上的#selenium(IRC),并尝试从那边的人那里获得更好的答案。
    driver.switchTo().frame("MyElementFrame");    
    driver.findElement(By.xpath("//*[@id='ed-userSearchCheckboxUserTypeFilter']/li[2]/input")).click();