FindElement by Name失败但由Xpath成功?

时间:2013-02-15 15:11:30

标签: selenium-webdriver junit4

这对我没有任何意义。以下是我试图与之相关的页面元素的源代码:

<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查找元素时 - 我得到一个元素不可见的错误,但是,当我尝试使用By.xpath找到相同的元素时 - 一切正常。这是我测试的代码。

wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("includeStudents")));
    driver.findElement(By.name("includeStudents")).click();
    //driver.findElement(By.xpath("//*[@id='ed-userSearchCheckboxUserTypeFilter']/li[2]/input")).click();

我添加等待确认它不仅仅是一个时间问题。当使用by.name

时,我收到超时错误,等待元素的可见性

我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

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

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