From 3f7a79af3192dfc2a0cf9822cf0510690fb6d03f Mon Sep 17 00:00:00 2001 From: mpg97 Date: Sun, 18 Dec 2022 14:35:18 +0100 Subject: [PATCH 1/7] =?UTF-8?q?conf:=20Adici=C3=B3n=20de=20Selenium=20en?= =?UTF-8?q?=20requirements.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 4c33b535a..02390a41f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,3 +9,4 @@ coverage==6.5.0 jsonnet==0.18.0 django-nose==1.4.6 django-rest-swagger==2.2.0 +selenium==4.7.2 From 6584d1423c34cef2404f8fbfa41527beea1b3da4 Mon Sep 17 00:00:00 2001 From: mpg97 Date: Sun, 18 Dec 2022 17:31:50 +0100 Subject: [PATCH 2/7] =?UTF-8?q?test:=20A=C3=B1adido=20test=20selenium=20pa?= =?UTF-8?q?ra=20comprobar=20login=20correcto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- decide/voting/tests.py | 43 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/decide/voting/tests.py b/decide/voting/tests.py index 063c52e1c..3233caaca 100644 --- a/decide/voting/tests.py +++ b/decide/voting/tests.py @@ -3,10 +3,17 @@ from django.utils import timezone from django.conf import settings from django.contrib.auth.models import User +from django.contrib.staticfiles.testing import StaticLiveServerTestCase from django.test import TestCase from rest_framework.test import APIClient from rest_framework.test import APITestCase +from selenium import webdriver +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.common.by import By +from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.common.keys import Keys + from base import mods from base.tests import BaseTestCase from census.models import Census @@ -14,6 +21,7 @@ from mixnet.mixcrypt import MixCrypt from mixnet.models import Auth from voting.models import Voting, Question, QuestionOption +from datetime import datetime class VotingTestCase(BaseTestCase): @@ -208,3 +216,38 @@ def test_update_voting(self): response = self.client.put('/voting/{}/'.format(voting.pk), data, format='json') self.assertEqual(response.status_code, 400) self.assertEqual(response.json(), 'Voting already tallied') + +class LogInTests(StaticLiveServerTestCase): + + def setUp(self): + #Load base test functionality for decide + self.base = BaseTestCase() + self.base.setUp() + + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + + super().setUp() + + def tearDown(self): + super().tearDown() + self.driver.quit() + + self.base.tearDown() + + def successLogIn(self): + self.cleaner.set_window_size(1280, 720) + self.cleaner.get(self.live_server_url+"/admin/login/?next=/admin/") + + self.cleaner.find_element(By.ID, "id_username").click() + self.cleaner.find_element(By.ID, "id_username").send_keys("decide") + + self.cleaner.find_element(By.ID, "id_password").click() + self.cleaner.find_element(By.ID, "id_password").send_keys("decide") + + self.cleaner.find_element_by_xpath('/html/body/div/div[2]/div/div[1]/div/form/div[3]/input').click() + self.assertTrue(self.cleaner.current_url == self.live_server_url+"/admin/") + + print("se esta ejecutando") + From 2a09b8691a471dffa1cd59042b7828ece21abbc1 Mon Sep 17 00:00:00 2001 From: mpg97 Date: Sun, 18 Dec 2022 17:48:34 +0100 Subject: [PATCH 3/7] =?UTF-8?q?test:=20A=C3=B1adido=20test=20selenium=20pa?= =?UTF-8?q?ra=20comprobar=20login=20err=C3=B3neo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- decide/voting/tests.py | 50 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/decide/voting/tests.py b/decide/voting/tests.py index 3233caaca..72faef116 100644 --- a/decide/voting/tests.py +++ b/decide/voting/tests.py @@ -217,7 +217,7 @@ def test_update_voting(self): self.assertEqual(response.status_code, 400) self.assertEqual(response.json(), 'Voting already tallied') -class LogInTests(StaticLiveServerTestCase): +class LogInSuccessTests(StaticLiveServerTestCase): def setUp(self): #Load base test functionality for decide @@ -246,8 +246,54 @@ def successLogIn(self): self.cleaner.find_element(By.ID, "id_password").click() self.cleaner.find_element(By.ID, "id_password").send_keys("decide") - self.cleaner.find_element_by_xpath('/html/body/div/div[2]/div/div[1]/div/form/div[3]/input').click() + self.cleaner.find_element(By.ID, "id_password").send_keys("Keys.ENTER") self.assertTrue(self.cleaner.current_url == self.live_server_url+"/admin/") print("se esta ejecutando") +class LogInErrorTests(StaticLiveServerTestCase): + + def setUp(self): + #Load base test functionality for decide + self.base = BaseTestCase() + self.base.setUp() + + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + + super().setUp() + + def tearDown(self): + super().tearDown() + self.driver.quit() + + self.base.tearDown() + + def usernameWrongLogIn(self): + self.cleaner.set_window_size(1280, 720) + self.cleaner.get(self.live_server_url+"/admin/login/?next=/admin/") + + self.cleaner.find_element(By.ID, "id_username").click() + self.cleaner.find_element(By.ID, "id_username").send_keys("usuarioNoExistente") + + self.cleaner.find_element(By.ID, "id_password").click() + self.cleaner.find_element(By.ID, "id_password").send_keys("usuarioNoExistente") + + self.cleaner.find_element(By.ID, "id_password").send_keys("Keys.ENTER") + + self.assertTrue(self.cleaner.find_element_by_xpath('/html/body/div/div[2]/div/div[1]/p').text == 'Please enter the correct username and password for a staff account. Note that both fields may be case-sensitive.') + + def passwordWrongLogIn(self): + self.cleaner.set_window_size(1280, 720) + self.cleaner.get(self.live_server_url+"/admin/login/?next=/admin/") + + self.cleaner.find_element(By.ID, "id_username").click() + self.cleaner.find_element(By.ID, "id_username").send_keys("decide") + + self.cleaner.find_element(By.ID, "id_password").click() + self.cleaner.find_element(By.ID, "id_password").send_keys("wrongPassword") + + self.cleaner.find_element(By.ID, "id_password").send_keys("Keys.ENTER") + + self.assertTrue(self.cleaner.find_element_by_xpath('/html/body/div/div[2]/div/div[1]/p').text == 'Please enter the correct username and password for a staff account. Note that both fields may be case-sensitive.') From 7890f5bbb55fa7ba684beced9c1146476533c313 Mon Sep 17 00:00:00 2001 From: mpg97 Date: Sun, 18 Dec 2022 18:07:30 +0100 Subject: [PATCH 4/7] =?UTF-8?q?test:=20A=C3=B1adido=20test=20selenium=20pa?= =?UTF-8?q?ra=20comprobar=20creaci=C3=B3n=20de=20Census?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- decide/census/tests.py | 90 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/decide/census/tests.py b/decide/census/tests.py index e86ff7467..8d24571bd 100644 --- a/decide/census/tests.py +++ b/decide/census/tests.py @@ -3,9 +3,16 @@ from django.test import TestCase from rest_framework.test import APIClient +from selenium import webdriver +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.common.by import By +from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.common.keys import Keys + from .models import Census from base import mods from base.tests import BaseTestCase +from datetime import datetime class CensusTestCase(BaseTestCase): @@ -73,3 +80,86 @@ def test_destroy_voter(self): response = self.client.delete('/census/{}/'.format(1), data, format='json') self.assertEqual(response.status_code, 204) self.assertEqual(0, Census.objects.count()) + + +class CensusTest(): + def setUp(self): + #Load base test functionality for decide + self.base = BaseTestCase() + self.base.setUp() + + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + + super().setUp() + + def tearDown(self): + super().tearDown() + self.driver.quit() + + self.base.tearDown() + + def createCensusSuccess(self): + self.cleaner.set_window_size(1280, 720) + self.cleaner.get(self.live_server_url+"/admin/login/?next=/admin/") + + self.cleaner.find_element(By.ID, "id_username").click() + self.cleaner.find_element(By.ID, "id_username").send_keys("decide") + + self.cleaner.find_element(By.ID, "id_password").click() + self.cleaner.find_element(By.ID, "id_password").send_keys("decide") + + self.cleaner.find_element(By.ID, "id_password").send_keys("Keys.ENTER") + + self.cleaner.get(self.live_server_url+"/admin/census/census/add") + now = datetime.now() + self.cleaner.find_element(By.ID, "id_voting_id").click() + self.cleaner.find_element(By.ID, "id_voting_id").send_keys(now.strftime("%m%d%M%S")) + self.cleaner.find_element(By.ID, "id_voter_id").click() + self.cleaner.find_element(By.ID, "id_voter_id").send_keys(now.strftime("%m%d%M%S")) + self.cleaner.find_element(By.NAME, "_name").click() + + self.assertTrue(self.cleaner.current_url == self.live_server_url+"/admin/census/census") + + def createCensusEmptyError(self): + self.cleaner.set_window_size(1280, 720) + self.cleaner.get(self.live_server_url+"/admin/login/?next=/admin/") + + self.cleaner.find_element(By.ID, "id_username").click() + self.cleaner.find_element(By.ID, "id_username").send_keys("decide") + + self.cleaner.find_element(By.ID, "id_password").click() + self.cleaner.find_element(By.ID, "id_password").send_keys("decide") + + self.cleaner.find_element(By.ID, "id_password").send_keys("Keys.ENTER") + + self.cleaner.get(self.live_server_url+"/admin/census/census/add") + + self.cleaner.find_element(By.NAME, "_name").click() + + self.assertTrue(self.cleaner.find_element_by_xpath('/html/body/div/div[3]/div/div[1]/div/form/div/p').text == 'Please correct the errors below.') + self.assertTrue(self.cleaner.current_url == self.live_server_url+"/admin/census/census/add") + + def createCensusValueError(self): + self.cleaner.set_window_size(1280, 720) + self.cleaner.get(self.live_server_url+"/admin/login/?next=/admin/") + + self.cleaner.find_element(By.ID, "id_username").click() + self.cleaner.find_element(By.ID, "id_username").send_keys("decide") + + self.cleaner.find_element(By.ID, "id_password").click() + self.cleaner.find_element(By.ID, "id_password").send_keys("decide") + + self.cleaner.find_element(By.ID, "id_password").send_keys("Keys.ENTER") + + self.cleaner.get(self.live_server_url+"/admin/census/census/add") + now = datetime.now() + self.cleaner.find_element(By.ID, "id_voting_id").click() + self.cleaner.find_element(By.ID, "id_voting_id").send_keys('64654654654654') + self.cleaner.find_element(By.ID, "id_voter_id").click() + self.cleaner.find_element(By.ID, "id_voter_id").send_keys('64654654654654') + self.cleaner.find_element(By.NAME, "_name").click() + + self.assertTrue(self.cleaner.find_element_by_xpath('/html/body/div/div[3]/div/div[1]/div/form/div/p').text == 'Please correct the errors below.') + self.assertTrue(self.cleaner.current_url == self.live_server_url+"/admin/census/census/add") \ No newline at end of file From 1c77e5dd3a04f340b071bfe271245ca77301ecb2 Mon Sep 17 00:00:00 2001 From: mpg97 Date: Sun, 18 Dec 2022 18:17:39 +0100 Subject: [PATCH 5/7] =?UTF-8?q?test:=20A=C3=B1adido=20test=20selenium=20pa?= =?UTF-8?q?ra=20comprobar=20creaci=C3=B3n=20de=20Question?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- decide/census/tests.py | 5 ++-- decide/voting/tests.py | 66 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/decide/census/tests.py b/decide/census/tests.py index 8d24571bd..8cf33fc6e 100644 --- a/decide/census/tests.py +++ b/decide/census/tests.py @@ -2,6 +2,7 @@ from django.contrib.auth.models import User from django.test import TestCase from rest_framework.test import APIClient +from django.contrib.staticfiles.testing import StaticLiveServerTestCase from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait @@ -82,7 +83,7 @@ def test_destroy_voter(self): self.assertEqual(0, Census.objects.count()) -class CensusTest(): +class CensusTest(StaticLiveServerTestCase): def setUp(self): #Load base test functionality for decide self.base = BaseTestCase() @@ -137,7 +138,7 @@ def createCensusEmptyError(self): self.cleaner.get(self.live_server_url+"/admin/census/census/add") self.cleaner.find_element(By.NAME, "_name").click() - + self.assertTrue(self.cleaner.find_element_by_xpath('/html/body/div/div[3]/div/div[1]/div/form/div/p').text == 'Please correct the errors below.') self.assertTrue(self.cleaner.current_url == self.live_server_url+"/admin/census/census/add") diff --git a/decide/voting/tests.py b/decide/voting/tests.py index 72faef116..ece2f5d97 100644 --- a/decide/voting/tests.py +++ b/decide/voting/tests.py @@ -297,3 +297,69 @@ def passwordWrongLogIn(self): self.cleaner.find_element(By.ID, "id_password").send_keys("Keys.ENTER") self.assertTrue(self.cleaner.find_element_by_xpath('/html/body/div/div[2]/div/div[1]/p').text == 'Please enter the correct username and password for a staff account. Note that both fields may be case-sensitive.') + +class QuestionsTests(StaticLiveServerTestCase): + + def setUp(self): + #Load base test functionality for decide + self.base = BaseTestCase() + self.base.setUp() + + options = webdriver.ChromeOptions() + options.headless = True + self.driver = webdriver.Chrome(options=options) + + super().setUp() + + def tearDown(self): + super().tearDown() + self.driver.quit() + + self.base.tearDown() + + def createQuestionSuccess(self): + self.cleaner.set_window_size(1280, 720) + self.cleaner.get(self.live_server_url+"/admin/login/?next=/admin/") + + self.cleaner.find_element(By.ID, "id_username").click() + self.cleaner.find_element(By.ID, "id_username").send_keys("decide") + + self.cleaner.find_element(By.ID, "id_password").click() + self.cleaner.find_element(By.ID, "id_password").send_keys("decide") + + self.cleaner.find_element(By.ID, "id_password").send_keys("Keys.ENTER") + + self.cleaner.get(self.live_server_url+"/admin/voting/question/add/") + + self.cleaner.find_element(By.ID, "id_desc").click() + self.cleaner.find_element(By.ID, "id_desc").send_keys('Test') + self.cleaner.find_element(By.ID, "id_options-0-number").click() + self.cleaner.find_element(By.ID, "id_options-0-number").send_keys('1') + self.cleaner.find_element(By.ID, "id_options-0-option").click() + self.cleaner.find_element(By.ID, "id_options-0-option").send_keys('test1') + self.cleaner.find_element(By.ID, "id_options-1-number").click() + self.cleaner.find_element(By.ID, "id_options-1-number").send_keys('2') + self.cleaner.find_element(By.ID, "id_options-1-option").click() + self.cleaner.find_element(By.ID, "id_options-1-option").send_keys('test2') + self.cleaner.find_element(By.NAME, "_save").click() + + self.assertTrue(self.cleaner.current_url == self.live_server_url+"/admin/voting/question/") + + def createCensusEmptyError(self): + self.cleaner.set_window_size(1280, 720) + self.cleaner.get(self.live_server_url+"/admin/login/?next=/admin/") + + self.cleaner.find_element(By.ID, "id_username").click() + self.cleaner.find_element(By.ID, "id_username").send_keys("decide") + + self.cleaner.find_element(By.ID, "id_password").click() + self.cleaner.find_element(By.ID, "id_password").send_keys("decide") + + self.cleaner.find_element(By.ID, "id_password").send_keys("Keys.ENTER") + + self.cleaner.get(self.live_server_url+"/admin/voting/question/add/") + + self.cleaner.find_element(By.NAME, "_save").click() + + self.assertTrue(self.cleaner.find_element_by_xpath('/html/body/div/div[3]/div/div[1]/div/form/div/p').text == 'Please correct the errors below.') + self.assertTrue(self.cleaner.current_url == self.live_server_url+"/admin/voting/question/add/") \ No newline at end of file From fa87f263e66719910fad4ab6cf48486fbbf1d8c5 Mon Sep 17 00:00:00 2001 From: mpg97 Date: Sun, 18 Dec 2022 18:24:57 +0100 Subject: [PATCH 6/7] =?UTF-8?q?test:=20Correcci=C3=B3n=20en=20los=20test?= =?UTF-8?q?=20de=20Census?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- decide/census/tests.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/decide/census/tests.py b/decide/census/tests.py index 8cf33fc6e..3bc404283 100644 --- a/decide/census/tests.py +++ b/decide/census/tests.py @@ -119,7 +119,7 @@ def createCensusSuccess(self): self.cleaner.find_element(By.ID, "id_voting_id").send_keys(now.strftime("%m%d%M%S")) self.cleaner.find_element(By.ID, "id_voter_id").click() self.cleaner.find_element(By.ID, "id_voter_id").send_keys(now.strftime("%m%d%M%S")) - self.cleaner.find_element(By.NAME, "_name").click() + self.cleaner.find_element(By.NAME, "_save").click() self.assertTrue(self.cleaner.current_url == self.live_server_url+"/admin/census/census") @@ -137,7 +137,7 @@ def createCensusEmptyError(self): self.cleaner.get(self.live_server_url+"/admin/census/census/add") - self.cleaner.find_element(By.NAME, "_name").click() + self.cleaner.find_element(By.NAME, "_save").click() self.assertTrue(self.cleaner.find_element_by_xpath('/html/body/div/div[3]/div/div[1]/div/form/div/p').text == 'Please correct the errors below.') self.assertTrue(self.cleaner.current_url == self.live_server_url+"/admin/census/census/add") @@ -160,7 +160,7 @@ def createCensusValueError(self): self.cleaner.find_element(By.ID, "id_voting_id").send_keys('64654654654654') self.cleaner.find_element(By.ID, "id_voter_id").click() self.cleaner.find_element(By.ID, "id_voter_id").send_keys('64654654654654') - self.cleaner.find_element(By.NAME, "_name").click() + self.cleaner.find_element(By.NAME, "_save").click() self.assertTrue(self.cleaner.find_element_by_xpath('/html/body/div/div[3]/div/div[1]/div/form/div/p').text == 'Please correct the errors below.') self.assertTrue(self.cleaner.current_url == self.live_server_url+"/admin/census/census/add") \ No newline at end of file From b4c541d09b1dac0efcc9f44e835528a1a6cae0ea Mon Sep 17 00:00:00 2001 From: mpg97 Date: Sun, 18 Dec 2022 18:34:58 +0100 Subject: [PATCH 7/7] =?UTF-8?q?test:=20Correcci=C3=B3n=20en=20los=20test?= =?UTF-8?q?=20de=20Census=20y=20Voting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- decide/census/tests.py | 6 +++--- decide/voting/tests.py | 14 ++++++-------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/decide/census/tests.py b/decide/census/tests.py index 3bc404283..ef6a7169f 100644 --- a/decide/census/tests.py +++ b/decide/census/tests.py @@ -102,8 +102,8 @@ def tearDown(self): self.base.tearDown() def createCensusSuccess(self): - self.cleaner.set_window_size(1280, 720) self.cleaner.get(self.live_server_url+"/admin/login/?next=/admin/") + self.cleaner.set_window_size(1280, 720) self.cleaner.find_element(By.ID, "id_username").click() self.cleaner.find_element(By.ID, "id_username").send_keys("decide") @@ -124,8 +124,8 @@ def createCensusSuccess(self): self.assertTrue(self.cleaner.current_url == self.live_server_url+"/admin/census/census") def createCensusEmptyError(self): - self.cleaner.set_window_size(1280, 720) self.cleaner.get(self.live_server_url+"/admin/login/?next=/admin/") + self.cleaner.set_window_size(1280, 720) self.cleaner.find_element(By.ID, "id_username").click() self.cleaner.find_element(By.ID, "id_username").send_keys("decide") @@ -143,8 +143,8 @@ def createCensusEmptyError(self): self.assertTrue(self.cleaner.current_url == self.live_server_url+"/admin/census/census/add") def createCensusValueError(self): - self.cleaner.set_window_size(1280, 720) self.cleaner.get(self.live_server_url+"/admin/login/?next=/admin/") + self.cleaner.set_window_size(1280, 720) self.cleaner.find_element(By.ID, "id_username").click() self.cleaner.find_element(By.ID, "id_username").send_keys("decide") diff --git a/decide/voting/tests.py b/decide/voting/tests.py index ece2f5d97..b8dc1c226 100644 --- a/decide/voting/tests.py +++ b/decide/voting/tests.py @@ -237,8 +237,8 @@ def tearDown(self): self.base.tearDown() def successLogIn(self): - self.cleaner.set_window_size(1280, 720) self.cleaner.get(self.live_server_url+"/admin/login/?next=/admin/") + self.cleaner.set_window_size(1280, 720) self.cleaner.find_element(By.ID, "id_username").click() self.cleaner.find_element(By.ID, "id_username").send_keys("decide") @@ -249,8 +249,6 @@ def successLogIn(self): self.cleaner.find_element(By.ID, "id_password").send_keys("Keys.ENTER") self.assertTrue(self.cleaner.current_url == self.live_server_url+"/admin/") - print("se esta ejecutando") - class LogInErrorTests(StaticLiveServerTestCase): def setUp(self): @@ -271,9 +269,9 @@ def tearDown(self): self.base.tearDown() def usernameWrongLogIn(self): - self.cleaner.set_window_size(1280, 720) self.cleaner.get(self.live_server_url+"/admin/login/?next=/admin/") - + self.cleaner.set_window_size(1280, 720) + self.cleaner.find_element(By.ID, "id_username").click() self.cleaner.find_element(By.ID, "id_username").send_keys("usuarioNoExistente") @@ -285,8 +283,8 @@ def usernameWrongLogIn(self): self.assertTrue(self.cleaner.find_element_by_xpath('/html/body/div/div[2]/div/div[1]/p').text == 'Please enter the correct username and password for a staff account. Note that both fields may be case-sensitive.') def passwordWrongLogIn(self): - self.cleaner.set_window_size(1280, 720) self.cleaner.get(self.live_server_url+"/admin/login/?next=/admin/") + self.cleaner.set_window_size(1280, 720) self.cleaner.find_element(By.ID, "id_username").click() self.cleaner.find_element(By.ID, "id_username").send_keys("decide") @@ -318,8 +316,8 @@ def tearDown(self): self.base.tearDown() def createQuestionSuccess(self): - self.cleaner.set_window_size(1280, 720) self.cleaner.get(self.live_server_url+"/admin/login/?next=/admin/") + self.cleaner.set_window_size(1280, 720) self.cleaner.find_element(By.ID, "id_username").click() self.cleaner.find_element(By.ID, "id_username").send_keys("decide") @@ -346,8 +344,8 @@ def createQuestionSuccess(self): self.assertTrue(self.cleaner.current_url == self.live_server_url+"/admin/voting/question/") def createCensusEmptyError(self): - self.cleaner.set_window_size(1280, 720) self.cleaner.get(self.live_server_url+"/admin/login/?next=/admin/") + self.cleaner.set_window_size(1280, 720) self.cleaner.find_element(By.ID, "id_username").click() self.cleaner.find_element(By.ID, "id_username").send_keys("decide")