如何使用 Chrome Webdriver 关闭下载横幅?
How to close download banner with Chrome Webdriver?
在我的测试中,我下载了一个文件,它工作正常,但后来当我试图点击一个元素时,我无法滚动到视图中,页面底部的 chrome 下载对话框是在路上。无法将我需要单击的按钮移动到视图中,所以有没有办法使用 chrome webdriver 关闭该下载框?
您可以使用 org.openqa.selenium.interactions.Actions
class 移动到元素 view
:
WebElement element = driver.findElement(By.id("my-id"));
Actions actions = new Actions(driver);
actions.moveToElement(element);
// actions.click();
actions.perform();
你问题的答案:
否,目前无法通过[=35=访问(并因此关闭)浏览器的下载对话框(在您的情况下chrome) ].
你可以做什么:
- 使用浏览器开发人员工具(按 F12)确定您要单击的按钮是否有 ID 或其他方法来定位它
- 那你就可以
driver.findElement(yourLocator).click();
假设您的按钮是这样的:
<input id="my-button" class="button" type="submit" value="Click">
然后您可以按如下方式定义您的定位器:
By yourLocator = By.id("my-button");
您可以使用下面的代码片段打开您的下载网页,然后关闭它并返回到您的目标页面:
action.sendKeys(Keys.CONTROL+ "j").build().perform();
action.keyUp(Keys.CONTROL).build().perform();
Thread.sleep(500);
ArrayList<String> tabs2 = new ArrayList<String> (driverChrome.getWindowHandles());
driverChrome.switchTo().window(tabs2.get(1));
Thread.sleep(500);
driverChrome.close();
driverChrome.switchTo().window(tabs2.get(0));
Thread.sleep(500);
发送控制键对我不起作用,但我开发了一个解决方法。我在新的window里做任何下载测试,然后关闭下载window,原来window没有下载栏。它必须是一个新的window,如果你做一个新的标签,它会转移过来,为了得到这个我使用JavaScript。切换到新的 window、运行 下载测试,然后在完成后切换到原来的 window。
string javascript = $"$(window.open('', '_blank', 'location=yes'))";
((IJavaScriptExecutor)Driver).ExecuteScript(javascript); //create new window
Driver.SwitchTo().Window(Driver.WindowHandles.Last())); //switch to new window
//do download test here
Driver.Close(); //close created window
Driver.SwitchTo().Window(Driver.WindowHandles.First()); //back to original window with no download bar
在我的测试中,我下载了一个文件,它工作正常,但后来当我试图点击一个元素时,我无法滚动到视图中,页面底部的 chrome 下载对话框是在路上。无法将我需要单击的按钮移动到视图中,所以有没有办法使用 chrome webdriver 关闭该下载框?
您可以使用 org.openqa.selenium.interactions.Actions
class 移动到元素 view
:
WebElement element = driver.findElement(By.id("my-id"));
Actions actions = new Actions(driver);
actions.moveToElement(element);
// actions.click();
actions.perform();
你问题的答案:
否,目前无法通过[=35=访问(并因此关闭)浏览器的下载对话框(在您的情况下chrome) ].
你可以做什么:
- 使用浏览器开发人员工具(按 F12)确定您要单击的按钮是否有 ID 或其他方法来定位它
- 那你就可以
driver.findElement(yourLocator).click();
假设您的按钮是这样的:
<input id="my-button" class="button" type="submit" value="Click">
然后您可以按如下方式定义您的定位器:
By yourLocator = By.id("my-button");
您可以使用下面的代码片段打开您的下载网页,然后关闭它并返回到您的目标页面:
action.sendKeys(Keys.CONTROL+ "j").build().perform();
action.keyUp(Keys.CONTROL).build().perform();
Thread.sleep(500);
ArrayList<String> tabs2 = new ArrayList<String> (driverChrome.getWindowHandles());
driverChrome.switchTo().window(tabs2.get(1));
Thread.sleep(500);
driverChrome.close();
driverChrome.switchTo().window(tabs2.get(0));
Thread.sleep(500);
发送控制键对我不起作用,但我开发了一个解决方法。我在新的window里做任何下载测试,然后关闭下载window,原来window没有下载栏。它必须是一个新的window,如果你做一个新的标签,它会转移过来,为了得到这个我使用JavaScript。切换到新的 window、运行 下载测试,然后在完成后切换到原来的 window。
string javascript = $"$(window.open('', '_blank', 'location=yes'))";
((IJavaScriptExecutor)Driver).ExecuteScript(javascript); //create new window
Driver.SwitchTo().Window(Driver.WindowHandles.Last())); //switch to new window
//do download test here
Driver.Close(); //close created window
Driver.SwitchTo().Window(Driver.WindowHandles.First()); //back to original window with no download bar