Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在python selenium中默认设置同一站点的cookie_Python 3.x_Selenium_Google Chrome_Selenium Chromedriver_Samesite - Fatal编程技术网

Python 3.x 如何在python selenium中默认设置同一站点的cookie

Python 3.x 如何在python selenium中默认设置同一站点的cookie,python-3.x,selenium,google-chrome,selenium-chromedriver,samesite,Python 3.x,Selenium,Google Chrome,Selenium Chromedriver,Samesite,我想这应该行得通: from selenium import webdriver options = webdriver.ChromeOptions() options.add_experimental_option('same-site-by-default-cookies', 'true') driver = webdriver.Chrome(chrome_options=options) 启用为未来chrome版本计划的samesite Cookie限制。不是,有错误: selenium

我想这应该行得通:

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_experimental_option('same-site-by-default-cookies', 'true')
driver = webdriver.Chrome(chrome_options=options)
启用为未来chrome版本计划的samesite Cookie限制。不是,有错误:

selenium.common.exceptions.InvalidArgumentException: 
Message: invalid argument: cannot parse capability: goog:chromeOptions
from invalid argument: unrecognized chrome option: same-site-by-default-cookies
我可以使用手动更改选项chrome://flags 看看它在工作。然而,我想自动化它,只运行测试脚本来查看它

这里有java代码: 它可以做到这一点,但我不确定如何将其传输到python

是否有任何参考资料可以帮助我设置此选项或其他选项?

您看对了

根据这篇文章,Chrome添加了SameSite支持,这将要求web开发人员使用
Set Cookie
标题的
SameSite
属性控制Cookie跨站点访问Cookie,该属性可以是
严格的
宽松的
,或

在Chromium博客@BenGalbraith[Chrome产品管理总监]和@JustinSchuh[Chrome工程总监]中提到:

此更改将使用户能够清除所有此类Cookie,同时保持单域Cookie不受影响,从而保留用户登录和设置。它还将使浏览器能够提供关于哪些站点正在设置这些cookie的清晰信息,以便用户能够对如何使用他们的数据做出明智的选择

这一更改还为用户带来了显著的安全好处,在默认情况下保护cookie免受跨站点注入和数据泄露攻击,如Spectre和CSRF。我们还宣布了最终将跨站点cookie限制为HTTPS连接的计划,为我们的用户提供额外的重要隐私保护

upar....@gmail.com在讨论中证明,您可以通过以下方式使用chromedriver的
localState
实验选项启用
sameSite
cookie标志:

ChromeOptions chromeOptions = new ChromeOptions();
HashMap<String, Object> chromeLocalStatePrefs = new HashMap<String, Object>();
List<String> experimentalFlags = new ArrayList<String>();
experimentalFlags.add("same-site-by-default-cookies@1");
experimentalFlags.add("cookies-without-same-site-must-be-secure@1");
chromeLocalStatePrefs.put("browser.enabled_labs_experiments",experimentalFlags);
chromeOptions.setExperimentalOption("localState", chromeLocalStatePrefs);
ChromeOptions ChromeOptions=新的ChromeOptions();
HashMap chromeLocalStatePrefs=新HashMap();
List experimentalFlags=new ArrayList();
experimentalFlags.add(“默认情况下为同一站点-cookies@1");
experimentalFlags.add(“没有相同站点的cookie必须是-secure@1");
chromeLocalStatePrefs.put(“浏览器启用的实验室实验”,实验标签);
设置实验选项(“localState”,chromeLocalStatePrefs);

tl;博士 文件:


在Chrome上测试:版本79.0.3945.130(官方版本)(64位)

在Python中,您可以使用以下代码

    chrome_options = webdriver.ChromeOptions()
    experimentalFlags = ['same-site-by-default-cookies@1','cookies-without-same-site-must-be-secure@1']
    chromeLocalStatePrefs = { 'browser.enabled_labs_experiments' : experimentalFlags}
    chrome_options.add_experimental_option('localState',chromeLocalStatePrefs)
    driver = webdriver.Chrome(options=chrome_options)
    driver.get("https://www.bing.com")
Python selenium客户端将发送以下功能

[1579581631.792][INFO]: Starting ChromeDriver 79.0.3945.36 (3582db32b33893869b8c1339e8f4d9ed1816f143-refs/branch-heads/3945@{#614})
[1579581631.792][INFO]: Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
[1579581632.264][INFO]: [f6b8433509c420fd317902f72b1d102d] COMMAND InitSession {
   "capabilities": {
      "alwaysMatch": {
         "browserName": "chrome",
         "goog:chromeOptions": {
            "args": [  ],
            "extensions": [  ],
            "localState": {
               "browser.enabled_labs_experiments": [ "same-site-by-default-cookies@1", "cookies-without-same-site-must-be-secure@1" ]
            }
         },
         "platformName": "any"
      },
      "firstMatch": [ {

      } ]
   },
   "desiredCapabilities": {
      "browserName": "chrome",
      "goog:chromeOptions": {
         "args": [  ],
         "extensions": [  ],
         "localState": {
            "browser.enabled_labs_experiments": [ "same-site-by-default-cookies@1", "cookies-without-same-site-must-be-secure@1" ]
         }
      },
      "platform": "ANY",
      "version": ""
   }
}

检查它是否真的起作用了。去chrome://flags/

谢谢您的回答,我很清楚SameSite属性的用途以及我为什么要测试它。然而,当我试图用python selenium代码保存实验选项时,出现了一个错误:
无法识别的chrome选项:默认情况下相同的站点cookie
,这是我想要解决的问题。如何在python中保存这个实验性选项?多亏了它-localstate方面是我们在测试中禁用此设置所需要的。Seleniumhq站点上没有很好的文档记录。@SystemsInCode很高兴能够帮助您。默认情况下,
@1
同一站点中有什么作用-cookies@1
什么意思?如果我想将默认情况下的
同一站点cookies
设置为
禁用
,我该怎么办?@1表示已启用,@2表示已禁用如何使用web.Config在asp.net web应用程序中设置?如果有人能给我提供解决方案,那将很有用。谢谢