【发布时间】:2018-10-05 15:56:05
【问题描述】:
options = webdriver.ChromeOptions()
#options.add_argument('-headless')
browser = webdriver.Chrome(executable_path="./chromedriver", options=options)
browser.get("http://127.0.0.1:8080/")
print browser.title
browser.find_element_by_name('username').send_keys("admin")
browser.find_element_by_name("password").send_keys("hunter2")
browser.find_element_by_tag_name("button").click()
print browser.get_cookies()
print 'loading another page: ' + url
#example url = example.com
browser.get(url)
我正在尝试进行涉及 CORS 的自动化测试。所以,我的要求是我成功登录域 A 并设置一些 cookie。这行得通,当我执行get_cookies() 时,我看到了 cookie 设置。接下来,我导航到另一个域 B,它向域 A 发出 CORS 请求(所有 CORS 标头都已正确设置,并手动测试)。但是这个请求失败了,因为当我导航到域 B 时,cookie 被清除了,所以请求不成功。
有没有办法强制cookies不清除?
注意:在 OSX 上与 Chrome 和 Firefox 驱动程序的行为相同
【问题讨论】:
-
你在哪里声明 url?你在哪里检查新的 url cookie?
-
您能否手动检查 cookie 是否是每个会话的,这意味着当您从 siteA 导航到 siteB 会话时终止并且 cookie 被删除。
-
@DarkSuniuM : URL 是作为函数的参数获取的(此处未显示)检查 cookie 是手动完成的,因为我没有运行这个无头(用于测试)
-
@Infern0 - 在驱动程序打开的chrome进程中,如果我手动测试,cookie不会被清除。看来,只有当调用
browser.get(url)并且 URL 是不同的域时,它才会被 selenium 清除。 -
@asudhak 您没有提供任何信息供我们进行分析。您能否使用二进制信息和您尝试 Automate 的 Manual Steps 以及相关的 HTML 和您看到的错误来更新问题?
标签: python selenium selenium-webdriver