使用 click() webdriver selenium 函数 Python 时超时

His*_*cha 1 python selenium webdriver click web-scraping

这是我的第一个网络抓取项目,我使用 selenium webdriver 和 Python 来在网站上选择一些选项后动态生成一些 csv 文件(尽管我还没有做到这一点)。

\n\n

但是,当执行到达按钮 click() 时,我遇到意外超时。单击已执行,但它卡在那里并且直到超时才继续执行。

\n\n

关于如何解决这个问题有任何线索吗?

\n\n

谢谢!!

\n\n
from 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()\n
Run Code Online (Sandbox Code Playgroud)\n\n

我得到的错误:

\n\n
Traceback (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**\n
Run Code Online (Sandbox Code Playgroud)\n

His*_*cha 5

我找到了解决该问题的方法。

显然,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)