【问题标题】:How to close download banner with Chrome Webdriver?如何使用 Chrome Webdriver 关闭下载横幅?
【发布时间】:2015-10-07 04:51:17
【问题描述】:

在我的测试中,我下载了一个文件,该文件运行良好,但后来当我尝试单击某个元素时,我无法滚动到视图中,页面底部的 chrome 下载对话框挡住了路。无法将我需要点击的按钮移动到视图中,那么有没有办法使用 chrome webdriver 关闭该下载框?

【问题讨论】:

    标签: java google-chrome selenium webdriver


    【解决方案1】:

    您可以使用org.openqa.selenium.interactions.Actions 类移动到元素view

    WebElement element = driver.findElement(By.id("my-id"));
    Actions actions = new Actions(driver);
    actions.moveToElement(element);
    // actions.click();
    actions.perform();
    

    【讨论】:

      【解决方案2】:

      回答你的问题:

      ,目前无法通过 Selenium/WebDriver 访问(并因此关闭)浏览器(在您的情况下为 chrome)的下载对话框。

      你可以做什么:

      • 使用浏览器开发者工具(按 F12)确定您要点击的按钮是否有 id 或其他东西来定位它
      • 那你就可以driver.findElement(yourLocator).click();

      假设你的按钮是这样的:

      <input id="my-button" class="button" type="submit" value="Click">

      然后你可以定义你的定位器如下:

      By yourLocator = By.id("my-button");

      【讨论】:

        【解决方案3】:

        您可以使用下面的代码 sn-p 打开您的下载网页,然后将其关闭并返回您的目标页面:

        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);
        

        【讨论】:

          【解决方案4】:

          发送控制键对我不起作用,但我开发了一种解决方法。我在新窗口做任何下载测试,然后关闭下载窗口,原来的窗口没有下载栏。它必须是一个新窗口,如果您创建一个新选项卡,它将转移过来,为此我使用 JavaScript。切换到新窗口,运行下载测试,完成后切换到原来的窗口。

          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
          

          【讨论】:

            猜你喜欢
            • 2020-11-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-10-24
            • 2018-05-26
            相关资源
            最近更新 更多