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()并对其进行计数,但不确定
driver.switchTo().frame("MyElementFrame");
driver.findElement(By.xpath("//*[@id='ed-userSearchCheckboxUserTypeFilter']/li[2]/input")).click();