我目前正在尝试使用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>
我尝试在我以前的代码前面单击搜索触发器,但这仍然不起作用:
self.driver.find_element_by_class_name("searchTrigger").click()
self.driver.find_element_by_id("MainContent_btnSearch").click()
任何建议将不胜感激!
请求的元素具有属性 style="display:none;"
,因此您需要使其可见
尝试使用以下代码:
self.driver.execute_script('document.getElementById("MainContent_btnSearch").style.display="block";')
self.driver.find_element_by_id("MainContent_btnSearch").click()
Selenium看不到屏幕的一部分。可能是另一个元素位于您尝试单击的元素之上。
对我来说,无需花费数小时搜索原因总是有效的方法是使用 Javascript 单击:
self.driver.execute_script("arguments[0].click();", elt)
其中elt
是一个WebElement - 例如由find_element_by_id(.)
返回。使其成为一个功能,并在出现问题时使用。
编辑:这是何时再次发生的通用答案,但在这种特殊情况下,另一个答案可能是正确的。