我目前正在尝试使用Selenium / Python / PhantomJS来搜索下面表单的结果:
http://gis.vgsi.com/newhavenct/Sales.aspx
看起来当我尝试点击搜索按钮时,我收到一个ElementNotVisibleException错误。
我的代码:
self.driver.find_element_by_id("MainContent_btnSearch").click()
经过一些在线挖掘后,似乎隐藏了按钮。实际上,这是搜索页面中的相关HTML代码:
<input type="button" value="Search!" class="btn btn-primary searchTrigger" style="width: 200px;" />
<input type="submit" name="ctl00$MainContent$btnSearch" value="Search" id="MainContent_btnSearch" style="width: 200px; display: none;" />
<div id="MainContent_ctl00" style="display:none;">
</div>
我尝试使用searchTrigger点击前面的代码,但这仍然无效:
self.driver.find_element_by_class_name("searchTrigger").click()
self.driver.find_element_by_id("MainContent_btnSearch").click()
非常感谢任何建议!
答案 0 :(得分:1)
Selenium看不到屏幕的一部分。可能是另一个元素位于您尝试单击的元素之上。
对我来说,无需花费数小时搜索原因即可使用Javascript:
self.driver.execute_script("arguments[0].click();", elt)
其中elt
是WebElement - 例如由find_element_by_id(.)
返回。
使其成为一个功能,并在问题发生的任何地方使用。
编辑:这是一个通用的答案,它会再次发生,但在这种特殊情况下,其他答案可能是正确的。
答案 1 :(得分:1)
请求的元素具有属性style="display:none;"
,因此您需要将其设为可见
尝试使用以下代码:
self.driver.execute_script('document.getElementById("MainContent_btnSearch").style.display="block";')
self.driver.find_element_by_id("MainContent_btnSearch").click()