我目前正在自动化网站并进行测试,以检查“记住我”选项的功能。 我的测试脚本登录,输入有效的用户名和密码,并在单击“登录”按钮之前选中“记住我”复选框。
要测试此功能,我使用pickle将cookie保存到文件,关闭浏览器,然后重新打开浏览器(加载cookie文件)。
def closeWebsite(self, saveCookies=False):
if saveCookies:
pickle.dump(self.driver.get_cookies(), open('cookies.pkl', 'wb'))
self.driver.close()
def openWebsite(self, loadCookies=False):
desired_caps = {}
desired_caps['browserName'] = 'firefox'
profile = webdriver.FirefoxProfile(firefoxProfile)
self.driver = webdriver.Firefox(profile)
self.driver.get(appUrl)
if loadCookies:
for cookie in pickle.load(open('cookies.pkl', 'rb')):
self.driver.add_cookie(cookie)
然而,当我这样做时,新的浏览器没有登录。我知道每次打开浏览器时都会创建一个新会话,并且可以使用driver.session_id
获取此会话ID
是否有可能在openWebsite方法中加载驱动程序并指定sessionID?
当我手动测试时,“记住我”选项按预期工作。我很难理解Selenium如何处理这种情况。
答案 0 :(得分:0)
对于初学者,您在添加Cookie之前加载页面。虽然在页面需要/查询之前有潜在到达,但这不正确,更不用说可靠了。
但是,如果您尝试在任何页面加载will get an error之前设置Cookie。
解决方案似乎是this:
首先,您需要在cookie有效的域上。如果您在开始交互之前尝试预设Cookie 一个网站,你的主页很大/需要一段时间才能加载 另一种方法是在网站上找到一个较小的页面,[...]
换句话说:
appUrl
相同的域上的小型参赛页面(无需等到完全加载)。appUrl
。从那以后你应该没事。