Search code examples
pythonseleniumreddit

Use python and selenium to delete my comments in reddit


I am trying to write a script to delete all my comments on my profile in Reddit.

So I am currently using Selenium to log-in and try to delete my comments, however I am stuck at the point when after my script press delete on my comment and it changes to "Are you sure Yes/No" then it can't find the "Yes" element by Xpath. The following code throws the error:

raise exception_class(message, screen, stacktrace) selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with Stacktrace:

My code is as follows:

    del_button = driver.find_element_by_xpath("//*[contains(@id,'thing_"+delete_type+"')]//div[2]/ul/li[7]/form/span[1]/a")
    del_button.click()        
    time.sleep(3)
    yes_button = driver.find_element_by_xpath("//*[contains(@id,'thing_"+delete_type+"')]//div[2]/ul/li[7]/form/span[1]//a[1]")
    yes_button.click()
    time.sleep(3)      

Solution

  • As there could be several hidden elements with same attributes on page, you might need to use index to click on exact element:

    driver.find_elements_by_xpath('//a[@class="yes"]')‌​[N].clic‌​k() # N is the index of target link
    

    I f you can't define exact index, you can use below code:

    from selenium.common.exceptions import ElementNotVisibleException
    
    for link in driver.find_elements_by_xpath('//a[@class="yes"]')‌:
        try:
            link.click()
            break
        except ElementNotVisibleException:
            pass