Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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
Java 是否可以修改selenium 3.7.1以允许在加载页面之前设置cookie_Java_Selenium_Cookies - Fatal编程技术网

Java 是否可以修改selenium 3.7.1以允许在加载页面之前设置cookie

Java 是否可以修改selenium 3.7.1以允许在加载页面之前设置cookie,java,selenium,cookies,Java,Selenium,Cookies,不久前,我编辑了java selenium standalone的2.5.3版,以删除在从cookie所属的域加载页面之前尝试设置cookie时出现的错误消息“无法设置cookie”。该修改涉及编辑一些javascript以删除错误检查 是否可以在selenium 3.7.1中对java构建进行类似的修改,以改变java chrome 目前,我正在使用以下maven依赖项。我还没有修改开源软件 <dependency> <groupId>org.s

不久前,我编辑了java selenium standalone的2.5.3版,以删除在从cookie所属的域加载页面之前尝试设置cookie时出现的错误消息“无法设置cookie”。该修改涉及编辑一些javascript以删除错误检查

是否可以在selenium 3.7.1中对java构建进行类似的修改,以改变java chrome

目前,我正在使用以下maven依赖项。我还没有修改开源软件

<dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-chrome-driver</artifactId>
            <version>3.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-remote-driver</artifactId>
            <version>3.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.7.1</version>
        </dependency>
./javascript/node/selenium webdriver/lib/error.js:474包含以下代码

/**
 * A request to set a cookie’s value could not be satisfied.
 */
class UnableToSetCookieError extends WebDriverError {
  /** @param {string=} opt_error the error message, if any. */
  constructor(opt_error) {
    super(opt_error);
  }
} has the 
./java/client/src/org/openqa/selenium/remote/ErrorCodes.java:245有以下代码

 public static final int UNABLE_TO_SET_COOKIE = 25;

 .add(new KnownError(UNABLE_TO_SET_COOKIE, "unable to set cookie", 500, UnableToSetCookieException.class, true, true))
显然无法设置Cookie异常可能很重要。因此,我取得了以下成绩

 grep -rnw './' -e "UnableToSetCookieException"

./java/client/src/org/openqa/selenium/remote/ErrorCodes.java:45:import org.openqa.selenium.UnableToSetCookieException;
./java/client/src/org/openqa/selenium/remote/ErrorCodes.java:245:    .add(new KnownError(UNABLE_TO_SET_COOKIE, "unable to set cookie", 500, UnableToSetCookieException.class, true, true))
./java/client/src/org/openqa/selenium/BUCK:128:    'UnableToSetCookieException.java',
./java/client/src/org/openqa/selenium/UnableToSetCookieException.java:25:public class UnableToSetCookieException extends WebDriverException {
./java/client/src/org/openqa/selenium/UnableToSetCookieException.java:26:  public UnableToSetCookieException() {
./java/client/src/org/openqa/selenium/UnableToSetCookieException.java:29:  public UnableToSetCookieException(String message) {
./java/client/src/org/openqa/selenium/UnableToSetCookieException.java:33:  public UnableToSetCookieException(Throwable cause) {
./java/client/src/org/openqa/selenium/UnableToSetCookieException.java:37:  public UnableToSetCookieException(String message, Throwable cause) {
./java/client/test/org/openqa/selenium/remote/ErrorHandlerTest.java:54:import org.openqa.selenium.UnableToSetCookieException;
./java/client/test/org/openqa/selenium/remote/ErrorHandlerTest.java:460:    exceptions.put(ErrorCodes.UNABLE_TO_SET_COOKIE, UnableToSetCookieException.class);
显然,下面的类抛出了cookie异常

/**
 * Thrown when a driver fails to set a cookie.
 *
 * @see org.openqa.selenium.WebDriver.Options#addCookie(Cookie)
 */
public class UnableToSetCookieException extends WebDriverException {
  public UnableToSetCookieException() {
  }

  public UnableToSetCookieException(String message) {
    super(message);
  }
然而,我还不知道这与产生错误的addCookie方法有何关系

driver.manage().addCookie(aCookie);

随着我了解更多信息,我将继续更新我的研究…

方法
addCookie
处理cookie就像浏览器一样,如果您不先调用
get
,则需要一个缺少的域。网页无法在其他域上设置cookie。如果是这样的话,任何页面都可以从谷歌或Facebook会话中重写cookies。单独使用Selenium可以在浏览器级别设置Cookie,但它需要一个特定的实现,这取决于驱动程序/浏览器。@FlorentB。我理解你的评论。看起来,在加载过程中很早就打开的站点就可以使用浏览器作为人工cookie。如果我使用购物车加载购物网站,则购物车中的项目在加载页面之前就已存在。如果我与selenium进行相同的交互,那么不再次加载页面是不可能的。这是非常明显的区别。我希望selenium的工作方式与浏览器在第一次加载或页面加载cookie时的工作方式相同。selenium java chrome驱动程序是否可以实现这一点?如果您的目标是重用会话,则使用带有参数
--user data dir=“path to Default directory”
的静态配置文件。否则,请使用廉价资源设置域,如
https://www.google.com/favicon.ico
或调用devtool API在浏览器级别设置cookie:将产品添加到购物车,保存浏览器配置文件,并在每次打开浏览器时使用该配置文件。“应该能行。”弗洛伦特说。我用firefox和早期版本的selenium测试了--user data dir方法,可能是3.5.1,我不确定,但是我没有发现它能有效地处理cookies。把favicon.ico称为廉价资源是个好建议。如果可能的话,希望Selenium可以创建一些逻辑来设置域,然后用cookies加载域,就像浏览器已经在工作一样。也许这是不可行的?方法
addCookie
处理cookie就像处理浏览器一样,如果不先调用
get
,则需要一个缺少的域。网页无法在其他域上设置cookie。如果是这样的话,任何页面都可以从谷歌或Facebook会话中重写cookies。单独使用Selenium可以在浏览器级别设置Cookie,但它需要一个特定的实现,这取决于驱动程序/浏览器。@FlorentB。我理解你的评论。看起来,在加载过程中很早就打开的站点就可以使用浏览器作为人工cookie。如果我使用购物车加载购物网站,则购物车中的项目在加载页面之前就已存在。如果我与selenium进行相同的交互,那么不再次加载页面是不可能的。这是非常明显的区别。我希望selenium的工作方式与浏览器在第一次加载或页面加载cookie时的工作方式相同。selenium java chrome驱动程序是否可以实现这一点?如果您的目标是重用会话,则使用带有参数
--user data dir=“path to Default directory”
的静态配置文件。否则,请使用廉价资源设置域,如
https://www.google.com/favicon.ico
或调用devtool API在浏览器级别设置cookie:将产品添加到购物车,保存浏览器配置文件,并在每次打开浏览器时使用该配置文件。“应该能行。”弗洛伦特说。我用firefox和早期版本的selenium测试了--user data dir方法,可能是3.5.1,我不确定,但是我没有发现它能有效地处理cookies。把favicon.ico称为廉价资源是个好建议。如果可能的话,希望Selenium可以创建一些逻辑来设置域,然后用cookies加载域,就像浏览器已经在工作一样。也许这不可行?
driver.manage().addCookie(aCookie);