当我尝试本地访问我们的测试环境 (https://www.test.net) 时,我们会立即重定向到 Google SSO。
我们如何在访问某个网站之前设置 cookie?
我从 https://www.selenium.dev/documentation/webdriver/interactions/cookies/ 中读到,我们必须先进入页面(已加载),然后才能设置 cookie。
我尝试了以下但无法通过:
试用##(获得
Message: invalid cookie domain: Cookie 'domain' mismatch
,因为它被重定向到Google SSO):
def get_url(self, url):
if os.getenv('GITHUB_ACTIONS', 'false').lower() == 'true':
return
else:
self.driver.get('https:test.net/')
time.sleep(3)
cookie = {
'name': '_oauth2_proxy_qs_staging',
'value': self.cookie,
'domain': 'test.net'
}
self.driver.add_cookie(cookie)
self.driver.refresh()
self.driver.get('https:test.net/')
time.sleep(3)
其他试验#1(保留在 Google SSO 中):
def get_url(self, url):
if os.getenv('GITHUB_ACTIONS', 'false').lower() == 'true':
return
else:
self.driver.get('https:test.net/')
time.sleep(3)
cookie = {
'name': '_oauth2_proxy_qs_staging',
'value': self.cookie,
}
self.driver.add_cookie(cookie)
self.driver.refresh()
self.driver.get('https:test.net/')
time.sleep(3)
其他试验#2(
Getting selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain
,即使我们保留'domain'
,同样的错误,因为它被重定向到Google SSO)
def get_url(self, url):
if os.getenv('GITHUB_ACTIONS', 'false').lower() == 'true':
return
else:
self.driver.get('about:blank')
time.sleep(3)
cookie = {
'name': '_oauth2_proxy_qs_staging',
'value': self.cookie,
'domain': 'test.net'
}
self.driver.add_cookie(cookie)
self.driver.refresh()
self.driver.get('https:test.net/')
time.sleep(3)
其他试验#3(工作中,但由于站点依赖性,解决方案未被接受,这是有效的,因为在我们设置 cookie 之前加载了
test.net
的子域)
def get_url(self, url):
# THIS IS NOT AN ACCEPTED SOLUTION
if os.getenv('GITHUB_ACTIONS', 'false').lower() == 'true':
return
else:
self.driver.get('https:test.test.net/')
time.sleep(3)
cookie = {
'name': '_oauth2_proxy_qs_staging',
'value': self.cookie,
'domain': 'test.net'
}
self.driver.add_cookie(cookie)
self.driver.refresh()
self.driver.get('https:test.net/')
time.sleep(3)
这种情况除了使用VPN还有其他方法吗?因为这只是我们本地运行时的问题。在 Github Actions 中,我们有自己的运行器,不需要 Google SSO。
您不必在 PAGE 上,您必须在 SITE/域上。尝试导航到您知道域中不存在的页面,例如https://www.test.net/error,并设置 cookie,然后导航到正确的 URL 并继续。