Python + Selenium Scrape错误:ElementNotVisibleException

时间:2016-07-06 14:54:59

标签: python selenium web-scraping phantomjs

我目前正在尝试使用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()

非常感谢任何建议!

2 个答案:

答案 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()