2017-12-17 4 views
0

Im folgenden Code auszuführen vermag ich nicht zweite Testfunktion def testclick (Selbst-)Unable 2. Testfunktion in Python Selen Unittest

import unittest 
from selenium import webdriver 
from time import sleep 

class LoginMaharaOrgLogin(unittest.TestCase): 
    @classmethod 
    def setUpClass(inst): 
     inst.driver = webdriver.Chrome() 
     #inst.driver.maximize_window() 
     inst.driver.get("https://demo.mahara.org/") 


    def testlogin(self): 
     driver = self.driver 
     self.assertEqual("Home - Mahara Demo", driver.title) 
     driver.find_element_by_xpath("//input[@id='login_login_username']").send_keys("student") 
     driver.find_element_by_xpath("//input[@id='login_login_password']").send_keys("MaharaDemo") 
     driver.find_element_by_xpath("//input[@id='login_submit']").click() 
     driver.find_element_by_xpath("//span[@class='icon icon-chevron-down collapsed']").click() 
     sleep(3) 


    def testclick(self): 
     self.driver.find_element_by_xpath("//span[text()='Logout']").click() 



    @classmethod 
    def tearDownClass(inst): 
     inst.driver.close() 

if __name__ == '__main__': 
    unittest.main()  

Wenn ich den obigen Code ausführen laufen ich die Störung erhalte wie:

Finding files... done. 
Importing test modules ... done. 

Hi 
====================================================================== 
ERROR: testclick (Login.LoginMaharaOrgLogin) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "C:\Users\Keerthiaradhya\eclipse-workspace\Unit_Test\Login.py", line 25, in testclick 
    self.driver.find_element_by_xpath("//span[text()='Logout']").click() 
    File "C:\Users\Keerthiaradhya\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 365, in find_element_by_xpath 
    return self.find_element(by=By.XPATH, value=xpath) 
    File "C:\Users\Keerthiaradhya\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 855, in find_element 
    'value': value})['value'] 
    File "C:\Users\Keerthiaradhya\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 308, in execute 
    self.error_handler.check_response(response) 
    File "C:\Users\Keerthiaradhya\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//span[text()='Logout']"} 
    (Session info: chrome=63.0.3239.84) 
    (Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.16299 x86_64) 


---------------------------------------------------------------------- 
Ran 2 tests in 18.020s 

FAILED (errors=1) 

Aber wenn ich um diesen:

self.driver.find_element_by_xpath("//span[text()='Logout']").click() 

Aussage in def testlogin(self) es

+0

Sie weisen diesen self.driver der Treibervariablen zu. Versuchen Sie, das Gleiche in der nächsten Funktion zu verwenden. –

Antwort

0

funktioniert können Sie versuchen:

def testclick(self): 
    driver.find_element_by_xpath("//span[text()='Logout']").click() 
0

Unittest Rahmentestfunktionen basierend auf dem Namen der Funktion und nicht in der Reihenfolge ausführen, die platziert wird. in Ihrem Fall die Ausführung von testclick() zuerst & es ist nicht das Element zu finden. Verwenden Sie also test1_login(self): und test2_logout(self): als Funktionsname wird es funktionieren.