使用click()Webdriver Selenium函数Python时超时

编程入门 行业动态 更新时间:2024-10-28 22:23:59
本文介绍了使用click()Webdriver Selenium函数Python时超时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

这是我的第一个Web抓取项目,我在Python上使用了Selenium Webdriver,以便在选择网站上的一些选项后动态生成一些csv文件(尽管我还没有)。

This is my first web scraping project and I'm using selenium webdriver with Python in order to dynamically generate some csv files after choosing a few options on a website (though I'm not there yet).

但是,当执行到达按钮click()时,我面临着意外的超时。单击会执行,但会卡在其中,并且直到超时都不会继续执行。

However, I'm facing an unexpected timeout when the execution reaches a button click(). The click is performed but it gets stuck in there and does not continue the execution till the timeout.

有任何解决方法的线索吗?

Any clues on how to solve that?

谢谢!

from selenium import webdriver from selenium.webdriver.support.ui import Select import time driver = webdriver.Firefox() driver.get('www8.receita.fazenda.gov.br/SimplesNacional/Aplicacoes/ATBHE/estatisticasSinac.app/Default.aspx') driver.find_element_by_id('ctl00_ctl00_Conteudo_AntesTabela_lnkOptantesPorCNAE').click() Select(driver.find_element_by_id("ctl00_ctl00_Conteudo_AntesTabela_ddlColuna")).select_by_visible_text("Município") filtro_uf = driver.find_element_by_id('ctl00_ctl00_Conteudo_AntesTabela_btnFiltros') for i in range (1, 28): filtro_uf.click() uf = Select(driver.find_element_by_id("ctl00_ctl00_Conteudo_AposTabela_ddlUf")) uf.options[i].click() time.sleep(2) driver.find_element_by_id('chkTodosMunicipios').click() time.sleep(2) driver.find_element_by_xpath("//*[contains(text(),'Ok')]").click() time.sleep(2) # Here is where my code get stuck and gets a timeout driver.find_element_by_id('ctl00_ctl00_Conteudo_AntesTabela_btnExibir').click()

我得到的错误:

Traceback (most recent call last): File "/home/hissashi/Desktop/Python3/WS_SINAC/download_SINAC.py", line 22, in <module> driver.find_element_by_id('ctl00_ctl00_Conteudo_AntesTabela_btnExibir').click() File "/home/hissashi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webelement.py", line 80, in click self._execute(Command.CLICK_ELEMENT) File "/home/hissashi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webelement.py", line 501, in _execute return self._parent.execute(command, params) File "/home/hissashi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 308, in execute self.error_handler.check_response(response) File "/home/hissashi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response raise exception_class(message, screen, stacktrace) **seleniummon.exceptions.TimeoutException: Message: Timeout loading page after 300000ms**

推荐答案

我找到了解决方法

显然,click()函数会阻塞代码,直到页面完全加载为止。但是,由于某种原因,该页面会一直永久加载(无需加载其他任何内容),并保留我的代码,直到达到超时限制为止。

Apparently, the click() function blocks the code until the page is "completely" loaded. However, for some reason, the page keeps loading forever (without anything else to load) and it holds my code till it reaches the timeout limit.

而不是使用click,我已将其更改为键ENTER,并且页面仍然永久加载,但不再保存代码。

Instead of using click, I've changed it to key ENTER and the page still keeps loading forever but it doesn't hold the code anymore.

#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')

更多推荐

使用click()Webdriver Selenium函数Python时超时

本文发布于:2023-11-08 10:40:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1569163.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   Webdriver   click   Python   Selenium

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!