我正在自动化一个测试用例,我单击了位存储桶上的“添加关键点”按钮,并按照以下屏幕截图打开了弹出窗口:
以某种方式,当我在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的屏幕截图:
答案 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();