【发布时间】:2015-08-02 11:18:10
【问题描述】:
来源sn-p:
<div>
<div class="checkbox checkbox-primary margin-bottom-5 margin-top-5">
<input id="item" name="item" type="checkbox" value="true"/>
<label for="item">Item_Text</label>
<input name="item" type="hidden" value="false"/>
</div>
我正在尝试使用带有以下代码的 Splinter 单击此复选框:
browser.find_by_id('item')click()
我也试过 find_by_name。两者都产生以下异常:
(<class 'selenium.common.exceptions.ElementNotVisibleException'>, ElementNotVisibleException()
尝试调试:
print browser.is_element_present_by_id(item), browser.find_by_id(item).visible
返回真,假
Splinter 似乎无法单击该框,因为第二个输入块显示 type='hidden'。但是,添加 .first.click() 并不能解决问题,而且我没有想法。我可能遗漏了一些非常简单的东西!
【问题讨论】:
-
可能 id 是重复的。尝试使用独特的 xpath 或 css。
-
该 id 在页面上恰好使用了四次,都显示在那个 sn-p 中。在第一个输入标签(id/name)中两次,在标签中一次,在第二个隐藏输入标签(名称)中一次。我认为第二个输入标签导致它被隐藏,但我不知道如何只使用第一个标签,因为 .first 不起作用。在这种情况下,我将如何使用 xpath 或 css?
-
还有
<div class="checkbox checkbox-primary margin-bottom-5 margin-top-5">的其他div吗? -
是的,我想在此页面上检查的每个此类复选框都存在(其中有 27 个)。每一个的结构都和贴出来的sn-p一样。
标签: jquery python ajax selenium splinter