Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I create a Selenium Webdriver test to verify an element is not present?

I am creating unit tests for my Django app in Selenium Webdriver.

I have an AJAX method that deletes a Topic from the database. I'm trying to figure out how to verify that the deleted Topic is no longer present on the page.

I am trying to catch the Exception that the should be generated when Webdriver can't find an element: selenium.common.exceptions.NoSuchAttributeException

Instead I see an error:

*** URLError: <urlopen error timed out>

Here is how I have setup the tests:

from selenium import webdriver
from django.utils import unittest  

class TestAuthentication(unittest.TestCase):    
    scheme = 'http'    
    host = 'localhost'    
    port = '4444'    


    def setUp(self):    
        self._driver = webdriver.Firefox()    
        self._driver.implicitly_wait(10)    

    def login_as_Kallie(self):    
        # Kallie has manual login    
        self._driver.get('http://localhost:8000/account/signin/')    
        user = self._driver.find_element_by_id('id_username')    
        user.send_keys("Kallie")    
        password = self._driver.find_element_by_id('id_password')    
        password.send_keys('*********')    
        submit = self._driver.find_element_by_id('blogin')    
        submit.click()    

    def test_Kallie_can_delete_topic(self):    
        self.login_as_Kallie()    
        self._driver.find_element_by_link_text("Topic to delete").click()    
        self._driver.find_element_by_xpath("/html/body/div/div[4]/div/div/div[2]/div/table/tbody/tr/td[2]/div/div[3]/span[5]/a").click()    
        self._driver.find_element_by_class_name('dialog-yes').click()    
        self._driver.get("http://localhost:8000/questions/")    
        # this is the Python exception to catch: selenium.common.exceptions.NoSuchAttributeException    
        self.assertRaises('selenium.common.exceptions.NoSuchAttributeException', self._driver.find_element_by_link_text("Topic to delete"))    

    def tearDown(self):    
        self._driver.quit()    

How can I test that a Element of the page is absent?

like image 589
BryanWheelock Avatar asked Dec 04 '22 18:12

BryanWheelock


1 Answers

from selenium.common.exceptions import NoSuchElementException

with self.assertRaises(NoSuchElementException):
    self._driver.find_element_by_link_text("Topic to delete")
like image 78
mynameistechno Avatar answered Dec 22 '22 01:12

mynameistechno