Python Selenium Local Storage返回None

时间:2017-05-21 22:44:54

标签: python django selenium phantomjs

我正在用Django和Selenium用PhantomJS编写一些单元测试。

除了我需要访问浏览器本地存储以验证我的令牌是否正确之外,事情似乎正在起作用。

到目前为止我的代码是:

from selenium.webdriver.phantomjs.webdriver import WebDriver
class UserSeleniumTestCase(StaticLiveServerTestCase):

    @classmethod
    def setUpClass(cls):
        super(UserSeleniumTestCase, cls).setUpClass()
        cls.selenium = WebDriver()
        cls.selenium.implicitly_wait(10)

    @classmethod
    def tearDownClass(cls):
        cls.selenium.quit()
        super(UserSeleniumTestCase, cls).tearDownClass()

    def setUp(self):
        # create the users.


    def test_login(self):
        self.selenium.get(
            '%s%s' % (self.live_server_url, reverse_lazy('account_login')))
        self.assertIn(_('Sign In'), self.selenium.title)

        login_input = self.selenium.find_element_by_name("login")
        login_input.send_keys('test@example.com')
        password_input = self.selenium.find_element_by_name("password")
        password_input.send_keys('safe!')
        self.selenium.find_element_by_id("btn_login").click()

        self.selenium.get(
            '%s%s' % (self.live_server_url, reverse_lazy('polls:poll-add')))

        self.assertIn(_('Create Polls'), self.selenium.title)

        print(self.selenium.execute_script('localStorage.getItem("token");'))

我的问题是,None print(self.selenium.execute_script('localStorage.getItem("token");')) print(self.selenium.execute_script('window.localStorage.getItem("token");'))此时登录时应填充(在浏览器中工作正常)。我错过了什么吗?我也试过from

1 个答案:

答案 0 :(得分:1)

是的,您必须从JS脚本返回才能在Python级别查看值:

print(self.selenium.execute_script('return localStorage.getItem("token");'))