나는 테스트에서 같은 세션을 가진 2 개의 브라우저 창을 가지려고한다. 셀레늄 제한으로 인해 각 브라우저마다 다른 파이어 폭스 프로필이 있음에 유의하십시오.Django가 sessionid 쿠키를 덮어 쓰지 않게하는 방법은 무엇입니까?
테스트 (당신이 아니라 당신이 테스트/검사 직원의 사용자를 가지고, 그것을 시도 할 수 있습니다)입니다 :
이import time
from django.test import LiveServerTestCase
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.firefox.webdriver import WebDriver
from selenium.common.exceptions import NoSuchElementException
class ScriptTestCase(LiveServerTestCase):
def do_admin_login(self, username, password, browser):
browser.get('%s%s' % (self.live_server_url, '/admin/'))
username_input = browser.find_element_by_name("username")
username_input.send_keys(username)
password_input = browser.find_element_by_name("password")
password_input.send_keys(password)
browser.find_element_by_xpath('//input[@value="Log in"]').click()
def test_double_window_inactivity(self):
browser0 = WebDriver()
self.do_admin_login('test', 'test', browser0)
cookie = browser0.get_cookie('sessionid')
cookies = {'name': 'sessionid', 'value': cookie['value']}
browser1 = WebDriver()
browser1.add_cookie(cookies)
print 1, browser0.get_cookie('sessionid')['value']
print 2, browser1.get_cookie('sessionid')['value']
browser1.get('%s%s' % (self.live_server_url, '/admin/'))
print 3, browser0.get_cookie('sessionid')['value']
print 4, browser1.get_cookie('sessionid')['value']
출력은 다음과 같습니다
1 08ba4efecf00d2b98aacd174ed20e144
2 08ba4efecf00d2b98aacd174ed20e144
3 08ba4efecf00d2b98aacd174ed20e144
4 cb49379190cb37735697c5c82ab300fc
당신이 볼 수 있듯이, 후 browser1이/admin /을 열었을 때 sessionid가 unexpectively 무시되었습니다.
어떻게 해결할 수 있습니까? 나는 browser0과 같은 세션을 가질 브라우저 1을 갖고있다.
고정 코드, Hedde 덕분에 ---
def test_double_window_inactivity(self):
self.browser.execute_script('window.open("/admin/", "other")')
for win in self.browser.window_handles:
self.browser.switch_to_window(win)
self.assertWarningHidden()
time.sleep(5+1) # Added one second to compensate for fadeIn
for win in self.browser.window_handles:
self.browser.switch_to_window(win)
self.assertWarningShown()
time.sleep(5+1) # Added one second to compensate for lag
for win in self.browser.window_handles:
self.browser.switch_to_window(win)
self.assertWarningNotInPage()