【发布时间】:2014-02-02 22:47:04
【问题描述】:
这对我来说没有任何意义。这是我尝试与之交互的页面元素的源代码:
<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 时出现等待元素可见性的超时错误
我在这里缺少什么?
【问题讨论】:
-
您确定这是页面上唯一具有此名称的元素吗?您可以尝试执行以下操作以获得更合适的细节吗?
-
driver.findElement(By.id("ed-userSearchCheckboxUserTypeFilter")).findElement(By.name("includeStudents")).click();
-
有趣 - 我试过你的线路并且它有效 - TY。我现在很好奇-根据您的第一条评论,我假设认为还有另一个元素使用该名称(这也是我最初的想法)。但是在页面源代码上搜索并没有出现。此外,“等待”超时表明(对我而言)没有找到具有该名称的元素 - 即使页面已完全加载
-
这很奇怪。因为是的,我的想法确实是这样。您总是可以在该定位器上执行 findElements() 并对其进行计数,但不确定
- 元素是否存在问题。
-
您可以随时在 freenode (IRC) 上加入 #selenium,并尝试从那边的人那里得到更好的答案。