【问题标题】:Issue with selenium getting stuck when trying to press on a browser button尝试按下浏览器按钮时硒卡住的问题
【发布时间】:2021-03-26 11:32:44
【问题描述】:

我目前正在尝试使用 Python 上的 Selenium 抓取网站 https://demanda.ree.es/visiona/peninsula/demanda/tablas/2021-03-26/2,通过一个简单的代码,该代码必须单击箭头以更改可视化的日期,然后单击导致下载 CSV 文件。重复 1000 次以下载 1000 个 csv 文件。我试图通过使用以下代码来做到这一点:

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()
driver.get('https://demanda.ree.es/visiona/peninsula/demanda/tablas/2021-03-25/2')

for i in range(1000):
    WebDriverWait(driver,2).until(EC.element_to_be_clickable((By.XPATH,"//button[@class='md-icon-button main-menu md-button md-ink-ripple']"))).click()
    WebDriverWait(driver,2).until(EC.element_to_be_clickable((By.XPATH,"//span[@class='export-csv']"))).click()
driver.close()

但是,当我尝试运行代码时,它成功打开浏览器并单击箭头,但由于某种原因卡住了,无法单击导致文件下载的元素。我该如何解决这个问题?

python内部返回的错误如下:

---------------------------------------------------------------------------
TimeoutException                          Traceback (most recent call last)
<ipython-input-132-c47407eb9220> in <module>
      5 for i in range(2):
      6     WebDriverWait(driver,2).until(EC.element_to_be_clickable((By.XPATH,"//button[@class='md-icon-button main-menu md-button md-ink-ripple']"))).click()
----> 7     WebDriverWait(driver,2).until(EC.element_to_be_clickable((By.XPATH,"//span[@class='export-csv']"))).click()
      8 driver.close()

~/opt/anaconda3/lib/python3.8/site-packages/selenium/webdriver/support/wait.py in until(self, method, message)
     78             if time.time() > end_time:
     79                 break
---> 80         raise TimeoutException(message, screen, stacktrace)
     81 
     82     def until_not(self, method, message=''):

TimeoutException: Message: 

流程如下:

Link to example

【问题讨论】:

  • 它是否点击了箭头?我对此表示高度怀疑。 Xpath 有两个匹配项 - imgur.com/a/1xukf85
  • 如果你想点击左箭头试试这个 - //button[@class='md-icon-button main-menu md-button md-ink-ripple'][1] 右箭头试试这个 - //button[@class='md-icon-button main-menu md-button md-ink-ripple'][2]
  • @Madhan 实际上它确实单击了箭头并且页面正确更改(可能是因为它自动选择了第一个)。我尝试将箭头线更改为您的建议,并且以这种方式也可以正常工作,但是在尝试定位并按下第二个按钮时仍然卡住
  • 你可以试试这个 xpath 下载 csv //table[@id='tabla_generacion']//img 吗?
  • 这个有效!太棒了,非常感谢!

标签: python selenium web-scraping


【解决方案1】:

由于存在多个匹配的 xpath //span[@class='export-csv'],因此无法正确单击该元素。下载 csv 的确切 xpath 是 //table[@id='tabla_generacion']//img

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2013-12-26
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    相关资源
    最近更新 更多