【问题标题】:Error in Selenium webdriver on clicking on button单击按钮时 Selenium webdriver 出错
【发布时间】:2021-05-01 14:46:59
【问题描述】:

我在 Python Selenium 中有错误。我正在尝试使用 Selenium 下载所有歌曲,但出现了一些错误。这是代码:

from selenium import webdriver
import time

driver = webdriver.Chrome('/home/tigran/Documents/chromedriver/chromedriver')

url = 'https://sefon.pro/genres/shanson/top/'

driver.get(url)
songs = driver.find_elements_by_xpath('/html/body/div[2]/div[2]/div[1]/div[3]/div/div[3]/div[2]/a')


for song in songs:
    song.click()
    time.sleep(5)
    driver.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div[1]/div[2]/div/div[3]/div[1]/a[2]').click()
    time.sleep(8)
    driver.get(url)
    time.sleep(5)

这是错误:

Traceback (most recent call last):
  File "test.py", line 13, in <module>
    song.click()
  File "/home/tigran/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 80, in click
    self._execute(Command.CLICK_ELEMENT)
  File "/home/tigran/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "/home/tigran/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/tigran/.local/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
  (Session info: chrome=90.0.4430.72)

知道为什么会出现错误吗?

【问题讨论】:

    标签: python selenium selenium-webdriver


    【解决方案1】:

    在你的循环之前尝试添加try: 有时文档没有附加,所以会报错

    【讨论】:

    • 它没有用。第一首歌曲正在下载,但第二首出现错误。
    • 第二首歌是不是同一个xpath
    • 我正在收集歌曲列表。它打印所有列表。但是第二个不起作用。有一次成功了,但我不知道为什么。
    • 我明白,但是其他歌曲是否有相同的```元素xpath``
    • 这里是列表的xpath:/html/body/div[2]/div[2]/div[1]/div[3]/div/div[3]/div[2]/一个
    【解决方案2】:

    这里是链接selenium while loop not working。您需要在循环中定位元素。 最终代码:

    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome('/home/tigran/Documents/chromedriver/chromedriver')
    
    url = 'https://sefon.pro/genres/shanson/top/'
    
    driver.get(url)
    size = len(driver.find_elements_by_xpath('/html/body/div[2]/div[2]/div[1]/div[3]/div/div[3]/div[2]/a'))
    
    for i in range(0, size):
        songs = driver.find_elements_by_xpath('/html/body/div[2]/div[2]/div[1]/div[3]/div/div[3]/div[2]/a')
        songs[i].click()
        time.sleep(5)
        driver.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div[1]/div[2]/div/div[3]/div[1]/a[2]').click()
        time.sleep(8)
        driver.execute_script("window.history.go(-1)")
        time.sleep(5)
    

    【讨论】:

      猜你喜欢
      • 2021-09-03
      • 1970-01-01
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-31
      • 2016-01-30
      • 2016-03-02
      相关资源
      最近更新 更多