这对我没有任何意义。以下是我试图与之相关的页面元素的源代码:
<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
时,我收到超时错误,等待元素的可见性我在这里缺少什么?
答案 0 :(得分:2)
我可能完全不在这里,但您是否检查过该元素是否不在webdrivers实例的父级中?例如,如果您的代码位于尚未进入的框架内,那么它将无法找到Xpath。它将抛出一个错误,表示没有元素存在,并且webdriver在x秒后超时。
driver.switchTo().frame("MyElementFrame");
driver.findElement(By.xpath("//*[@id='ed-userSearchCheckboxUserTypeFilter']/li[2]/input")).click();