0

这对我来说没有任何意义。这是我试图与之交互的页面元素的源代码:

<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 时出现等待元素可见性的超时错误

我在这里想念什么?

4

1 回答 1

2

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

driver.switchTo().frame("MyElementFrame");    
driver.findElement(By.xpath("//*[@id='ed-userSearchCheckboxUserTypeFilter']/li[2]/input")).click();
于 2013-08-14T16:12:15.807 回答