use of com.axway.ats.common.PublicAtsApi in project ats-framework by Axway.
the class AbstractHtmlEngine method reloadFrames.
@PublicAtsApi
public void reloadFrames() {
// real browsers reloads the frames automatically
if (webDriver instanceof HtmlUnitDriver) {
Field webClientField = null;
boolean fieldAccessibleState = false;
try {
// Retrieve current WebClient instance (with the current page) from the Selenium WebDriver
TargetLocator targetLocator = webDriver.switchTo();
webClientField = targetLocator.getClass().getDeclaringClass().getDeclaredField("webClient");
fieldAccessibleState = webClientField.isAccessible();
webClientField.setAccessible(true);
WebClient webClient = (WebClient) webClientField.get(targetLocator.defaultContent());
HtmlPage page = (HtmlPage) webClient.getCurrentWindow().getEnclosedPage();
for (final FrameWindow frameWindow : page.getFrames()) {
final BaseFrameElement frame = frameWindow.getFrameElement();
// use == and not equals(...) to identify initial content (versus URL set to "about:blank")
if (frame.getEnclosedPage().getWebResponse().getWebRequest().getUrl() == WebClient.URL_ABOUT_BLANK) {
String src = frame.getSrcAttribute();
if (src != null && !src.isEmpty()) {
final URL url;
try {
url = ((HtmlPage) frame.getEnclosedPage()).getFullyQualifiedUrl(src);
} catch (final MalformedURLException e) {
String message = "Invalid src attribute of " + frame.getTagName() + ": url=[" + src + "]. Ignored.";
final IncorrectnessListener incorrectnessListener = webClient.getIncorrectnessListener();
incorrectnessListener.notify(message, this);
return;
}
if (isAlreadyLoadedByAncestor(url, ((HtmlPage) frame.getEnclosedPage()))) {
String message = "Recursive src attribute of " + frame.getTagName() + ": url=[" + src + "]. Ignored.";
final IncorrectnessListener incorrectnessListener = webClient.getIncorrectnessListener();
incorrectnessListener.notify(message, this);
log.info("Frame already loaded: " + frame.toString());
return;
}
try {
final WebRequest request = new WebRequest(url);
request.setAdditionalHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9, text/*;q=0.7, */*;q=0.5");
if (frameWindow.getName() == null || frameWindow.getName().isEmpty()) {
frameWindow.setName("frame_" + page.getFrames().indexOf(frameWindow));
}
webClient.loadWebResponseInto(webClient.loadWebResponse(request), frameWindow);
log.info("Frame loaded: " + frame.toString());
} catch (IOException e) {
log.error("Error when getting content for " + frame.getTagName() + " with src=" + url, e);
}
}
} else {
log.info("Frame already loaded: " + frame.toString());
}
}
} catch (Exception e) {
throw new SeleniumOperationException("Error retrieving internal Selenium web client", e);
} finally {
if (webClientField != null) {
webClientField.setAccessible(fieldAccessibleState);
}
}
}
}
use of com.axway.ats.common.PublicAtsApi in project ats-framework by Axway.
the class RealHtmlElementState method focus.
/**
* Moves the focus to the specified element.
* <b>Note:</b> This is somewhat breakable as
* the browser window needs to be the active system window, otherwise the keyboard
* events will go to another application.
*/
@PublicAtsApi
public void focus() {
// retrieve browser focus
webDriver.switchTo().window(webDriver.getWindowHandle());
// now focus the target element
WebElement webElement = RealHtmlElementLocator.findElement(element);
if ("input".equals(webElement.getTagName())) {
webElement.sendKeys("");
} else {
new Actions(webDriver).moveToElement(webElement).perform();
}
}
use of com.axway.ats.common.PublicAtsApi in project ats-framework by Axway.
the class AbstractHtmlEngine method setCookie.
/**
*
* @param name the name of the cookie. May not be null or an empty string.
* @param value the cookie value. May not be null.
* @param domain the domain the cookie is visible to.
* @param path the path the cookie is visible to. If left blank or set to null, will be set to
* "/".
* @param expiry the cookie's expiration date; may be null.
* @param isSecure whether this cookie requires a secure connection.
*/
@PublicAtsApi
public void setCookie(String name, String value, String domain, String path, Date expiry, boolean isSecure) {
Cookie cookie = new Cookie(name, value, domain, path, expiry, isSecure);
webDriver.manage().addCookie(cookie);
}
use of com.axway.ats.common.PublicAtsApi in project ats-framework by Axway.
the class SwingEngine method goToContainer.
/**
* Set active container under the <strong>current</strong> window
*
* @param containerMapId container element mapId. The element requires 'name' or 'title' property.
* @throws ElementNotFoundException if the container element is not found
*/
@PublicAtsApi
public void goToContainer(String containerMapId) {
UiElementProperties containerProperties = ElementsMap.getInstance().getElementProperties(containerMapId);
goToContainer(containerProperties);
}
use of com.axway.ats.common.PublicAtsApi in project ats-framework by Axway.
the class SwingTable method clickHeader.
/**
* Click table header by column index
*
* @param columnIndex the column index
* @throws VerificationException if the table element doesn't exist
*/
@PublicAtsApi
public void clickHeader(int columnIndex) {
new SwingElementState(this).waitToBecomeExisting();
JTableFixture tableFixture = (JTableFixture) SwingElementLocator.findFixture(this);
JTableHeaderFixture tableHeaderFixture = tableFixture.tableHeader();
try {
tableHeaderFixture.clickColumn(columnIndex);
} catch (Exception e) {
throw new UiElementException(e.getMessage(), this);
}
}
Aggregations