gpt4 book ai didi

java - 在 Chrome 中使用 Selenium 无法在新打开的选项卡中转到 "chrome://downloads/"

转载 作者:行者123 更新时间:2023-12-02 01:35:19 25 4
gpt4 key购买 nike

我正在使用 Selenium 和 Java 为 Chrome 浏览器编写测试。我的问题是,在我的测试中的某个地方,我下载了一些东西,它覆盖了一个网络元素。我需要关闭该下载栏(我无法滚动到该元素)。我搜索了很多,并缩小了范围,以这种方式在新选项卡中打开下载页面:

((JavascriptExecutor) driver).executeScript("window.open('chrome://downloads/');");

它会打开该新选项卡,但不会转到下载页面。

我还添加了这个:

driver.switchTo().window(tabs2.get(1));
driver.get("chrome://downloads/");

但它也不起作用。

我尝试过:

driver.findElement(By.cssSelector("Body")).sendKeys(Keys.CONTROL + "t");

action.sendKeys(Keys.CONTROL+ "j").build().perform();
action.keyUp(Keys.CONTROL).build().perform();
Thread.sleep(500);

但没有人打开该选项卡。

最佳答案

这是因为您无法以编程方式打开本地资源。Chrome 引发错误:

Not allowed to load local resource: chrome://downloads/

工作解决方案是使用以下标志运行 Chrome:

--disable-web-security --user-data-dir="C:\chrome_insecure"

但是这个技巧不适用于 Selenium Chrome 驱动程序(我实际上不知道为什么,尝试删除 chrome://version 中出现的所有参数,但这并不有帮助)。

所以对我来说,上述解决方案是唯一有效的:

C# 示例:

driver.Navigate().GoToUrl("chrome://downloads/")

如果您需要打开下载的文件,还有另一个技巧:

JavaScript 示例:

document.getElementsByTagName("downloads-manager")[0].shadowRoot.children["downloads-list"]._physicalItems[0].content.querySelectorAll("#file-link")[0].click()

Chrome 使用 Polymer 和 Shadow DOM,因此没有简单的方法来查询 #file-link 项。

您还需要以编程方式使用 JavaScript 执行 .click() 方法,因为它有一个自定义事件处理程序,它会打开实际下载的文件而不是 href 属性指向您下载文件的网址。

关于java - 在 Chrome 中使用 Selenium 无法在新打开的选项卡中转到 "chrome://downloads/",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41619819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com