java - 在 Linux 上点击 chrome headless 按钮时弹出窗口未打开

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

我正在自动化一个测试用例,其中我单击位桶上的“添加 key ”按钮并打开弹出窗口,如下图所示:

enter image description here

当我在 Linux AWS 上使用 jenkins 运行我的脚本时,不知怎的,这个弹出窗口没有打开。

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

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

          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

最佳答案

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

  • 似乎某些元素是动态生成的,理想情况下而不是 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();
      

关于java - 在 Linux 上点击 chrome headless 按钮时弹出窗口未打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53475696/

相关文章:

java - 为使用 JSch 通过 SSH 执行的命令提供输入/子命令

java - 简单循环时间复杂度内的递归函数

java - 增量索引 lucene

java - 如何使用 JPA 多对多联接到同一个表来分层检索数据

jquery - Firefox 和 Chrome 中的 CSS 输出解释了吗? [id^ ="exlidInput_scope"]

html - <a href =""> 在 IE 中不起作用,但在 chrome 中起作用

java - 使用 Jenkins 构建的常用方法

google-chrome - Chrome 在下载 PDF 时发送两个请求(并取消其中一个)

jenkins - 如何创建不同的,已解锁并带有预加载插件的Jenkins2图像?

python-2.7 - 通过 python 脚本在 Jenkins 中构建作业