如何在访问网站之前使用 Selenium 在网站上设置 cookie?

问题描述 投票:0回答:1

当我尝试本地访问我们的测试环境 (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。

python selenium-webdriver cookies google-sso
1个回答
0
投票

您不必在 PAGE 上,您必须在 SITE/域上。尝试导航到您知道域中不存在的页面,例如https://www.test.net/error,并设置 cookie,然后导航到正确的 URL 并继续。

© www.soinside.com 2019 - 2024. All rights reserved.