His*_*cha 1 python selenium webdriver click web-scraping
这是我的第一个网络抓取项目,我使用 selenium webdriver 和 Python 来在网站上选择一些选项后动态生成一些 csv 文件(尽管我还没有做到这一点)。
\n\n但是,当执行到达按钮 click() 时,我遇到意外超时。单击已执行,但它卡在那里并且直到超时才继续执行。
\n\n关于如何解决这个问题有任何线索吗?
\n\n谢谢!!
\n\nfrom selenium import webdriver\nfrom selenium.webdriver.support.ui import Select\nimport time\n\n\ndriver = webdriver.Firefox()\ndriver.get(\'http://www8.receita.fazenda.gov.br/SimplesNacional/Aplicacoes/ATBHE/estatisticasSinac.app/Default.aspx\')\ndriver.find_element_by_id(\'ctl00_ctl00_Conteudo_AntesTabela_lnkOptantesPorCNAE\').click()\nSelect(driver.find_element_by_id("ctl00_ctl00_Conteudo_AntesTabela_ddlColuna")).select_by_visible_text("Munic\xc3\xadpio")\nfiltro_uf = driver.find_element_by_id(\'ctl00_ctl00_Conteudo_AntesTabela_btnFiltros\')\n\nfor i in range (1, 28):\n filtro_uf.click()\n uf = Select(driver.find_element_by_id("ctl00_ctl00_Conteudo_AposTabela_ddlUf"))\n uf.options[i].click()\n time.sleep(2)\n driver.find_element_by_id(\'chkTodosMunicipios\').click()\n time.sleep(2)\n driver.find_element_by_xpath("//*[contains(text(),\'Ok\')]").click()\n time.sleep(2)\n\n# Here is where my code get stuck and gets a timeout\n driver.find_element_by_id(\'ctl00_ctl00_Conteudo_AntesTabela_btnExibir\').click()\nRun Code Online (Sandbox Code Playgroud)\n\n我得到的错误:
\n\nTraceback (most recent call last): \nFile "/home/hissashi/Desktop/Python3/WS_SINAC/download_SINAC.py", line 22, in <module> driver.find_element_by_id(\'ctl00_ctl00_Conteudo_AntesTabela_btnExibir\').click() \n File "/home/hissashi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webelement.py", line 80, in click\n self._execute(Command.CLICK_ELEMENT) \n File "/home/hissashi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webelement.py", line 501, in _execute\n return self._parent.execute(command, params) \n File "/home/hissashi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 308, in execute\n self.error_handler.check_response(response) \n File "/home/hissashi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response \nraise exception_class(message, screen, stacktrace)\n**selenium.common.exceptions.TimeoutException: Message: Timeout loading page after 300000ms**\nRun Code Online (Sandbox Code Playgroud)\n
我找到了解决该问题的方法。
显然,click() 函数会阻塞代码,直到页面“完全”加载。但是,由于某种原因,该页面会永远加载(没有其他任何内容要加载),并且它会保留我的代码,直到达到超时限制。
我没有使用单击,而是将其更改为 ENTER 键,并且页面仍然会永远加载,但它不再保存代码。
#FROM CLICK
driver.find_element_by_id('ctl00_ctl00_Conteudo_AntesTabela_btnExibir').click()
#TO SENDING ENTER (ue007)
driver.find_element_by_id('ctl00_ctl00_Conteudo_AntesTabela_btnExibir').send_keys(u'\ue007')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3720 次 |
| 最近记录: |