Java 您可以使用cookie绕过Selenium WebDriver中的403代码吗?

Java 您可以使用cookie绕过Selenium WebDriver中的403代码吗?,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我使用WebDriver通过imgHtml元素的src属性访问url字符串。然而,当我试图打开一个指向该URL的新窗口时,我得到了一个403未经授权的访问,我不知道如何克服它。我在这里读过很多关于stackoverflow的帖子,但我看到的最有希望的解决方案是在URLConnection中指定User-agent首选项,但没有效果。以下是我目前的代码: WebDriver driver = new ChromeDriver(); String urlSel

我使用
WebDriver
通过
img
Html元素的
src
属性访问
url
字符串。然而,当我试图打开一个指向该URL的新窗口时,我得到了一个
403未经授权的访问,我不知道如何克服它。我在这里读过很多关于stackoverflow的帖子,但我看到的最有希望的解决方案是在
URLConnection
中指定
User-agent
首选项,但没有效果。以下是我目前的代码:

WebDriver driver = new ChromeDriver();            
        String urlSelector = "body > div.overlay > div#cards"+cardID + " > div.one.card > img.core.load.bg.on";
        WebElement urlElem = driver.findElement(By.cssSelector(urlSelector));
        String url = urlElem.getAttribute("src");
        driver.get(url);
编辑: 我在另一篇帖子上读到,我可能需要将某些cookie传递给
URLConnection
,以避免
403
响应代码,并对自己进行身份验证。因此,我检查了我在网站上时出现的cookies(使用
WebDriver
),结果如下所示:

但是,如果我在普通浏览器上打开同一个网站(不使用
WebDriver
),我会得到一些额外的
imgur
cookies,如下所示:

据我所知,当我点击图片链接时,网站会使用Imgur来显示图片。在正常浏览器中单击图像链接后,我还决定检查imgur上的cookies,我得到了2个cookies,它们似乎与数据库有关(?):

就您所知,这些cookie中是否有一个用于验证我的身份,是否有方法使用my
URLConnection
中的cookie来避免出现
403
响应代码

附言:有问题的网站是这个

试试看(还没有测试过):


该网站可能会阻止深度链接,这可能与推荐人有关。。。值得注意的是,在浏览器中打开图像将使您没有可操作的DOM。。。(Selenium将无法使用它…)为什么要尝试导航到资源?@pcalkins您好,谢谢您的回答。我真的想下载它。。。你已经下载了。。。但是不知道如何通过代码访问缓存的资源。我下载了url,对吗?不是图像本身?我还尝试了另一种方法,通过web驱动程序在该url处打开该图像的上下文菜单,但我始终需要在打开的系统对话框中单击“保存”。我能移除并自动化那个系统部分吗?我做不到,但我可能会在稍后解决一些问题。。。如果我找到了解决方案,我会发布一个答案。我对
img=document.createElement()
字符串有点迷茫。它的字符串在哪里结束,为了访问属性/方法而创建的
img
对象在哪里,您正在使用的
img
实例是什么?它只是一个标记。它被附加到body标签上,因此它应该显示在底部。(根据当前页面的结构,您可能希望将其附加到另一个标记…和/或设置z顺序)
 WebDriver driver = new ChromeDriver();            
 String urlSelector = "body > div.overlay > div#cards"+cardID + " > div.one.card > img.core.load.bg.on";
  WebElement urlElem = driver.findElement(By.cssSelector(urlSelector));
  String url = urlElem.getAttribute("src");
  ((JavascriptExecutor)driver).executeScript("img = document.createElement('img'); 
      img.src = '"+ url + "';  img.id='forscreenshot'; document.body.appendChild(img);");
         WebDriverWait wait = new WebDriverWait(driver,5);
         WebElement element  = wait.until(ExpectedConditions.presenceOfElementLocated(By.id('forscreenshot')));
         File screenshot = element.getScreenshotAs(OutputType.FILE);