在Linux上单击按钮Chrome无头时弹出窗口无法打开

时间:2018-11-26 06:22:26

标签: java google-chrome jenkins selenium-webdriver amazon-ec2

我正在自动化一个测试用例,我单击了位存储桶上的“添加关键点”按钮,并按照以下屏幕截图打开了弹出窗口:

enter image description here

以某种方式,当我在Linux AWS上使用jenkins运行脚本时,此弹出窗口无法打开。

我正在使用Selenium Webdriver,Java,Chrome Headless和maven。

这是我在无头的chrome代码中的设置:

          HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
            ChromeOptions options = new ChromeOptions();
            options.setExperimentalOption("prefs", chromePrefs);
            DesiredCapabilities cap = DesiredCapabilities.chrome();
            cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
            cap.setCapability(ChromeOptions.CAPABILITY, options);
            chromePath = System.getProperty("user.dir") + prop.getProperty("chromeDriverPath");
            System.setProperty("webdriver.chrome.driver", chromePath);
            options.addArguments("--headless");
            options.addArguments("--start-maximized");
            options.addArguments("--window-size=1366,768");
            options.addArguments("--no-sandbox");
            options.addArguments("--disable-dev-shm-usage");
            options.addArguments("--disable-gpu");
            options.addArguments("--dns-prefetch-disable");
            options.addArguments("--always-authorize-plugins");
            options.addArguments("enable-automation");
            options.addArguments("--disable-browser-side-navigation");
            options.setPageLoadStrategy(PageLoadStrategy.NONE);
            driver = new ChromeDriver(options);

我错过了其他任何可以帮助我解决此问题的论点吗?

点击并打开弹出窗口的按钮的HTML代码:

<div class="buttons">
    <button class="aui-button aui-button-primary" id="add-key" resolved="">Add key</button>

  </div>

HTML的屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:1)

根据您共享的HTML调用元素上的click(),文本为添加键,您可以使用以下解决方案:

  • 似乎某些元素是动态生成的,理想情况下,您需要使用 PageLoadStrategy.NONE 来代替PageLoadStrategy.NORMAL,如下所示:

    options.setPageLoadStrategy(PageLoadStrategy.NORMAL);
    
  • 促使 WebDriverWait 使元素可点击,如下所示:

    • CSS_SELECTOR

      new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("button.aui-button.aui-button-primary#add-key"))).click();
      
    • XPATH

      new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@class='aui-button aui-button-primary' and @id='add-key'][text()='Add key']"))).click();