Python+Selenium Scrape Error: ElementNotVisibleException



我目前正在尝试使用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(.)返回。使其成为一个功能,并在出现问题时使用。

编辑:这是何时再次发生的通用答案,但在这种特殊情况下,另一个答案可能是正确的。

相关内容

  • 没有找到相关文章

最新更新