
com.automationrockstars.gir.mobile.PageUtils Maven / Gradle / Ivy
/*******************************************************************************
* Copyright (c) 2015, 2016 Automation RockStars Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Apache License v2.0
* which accompanies this distribution, and is available at
* http://www.apache.org/licenses/LICENSE-2.0
*
* Contributors:
* Automation RockStars - initial API and implementation
*******************************************************************************/
package com.automationrockstars.gir.mobile;
import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.base.Splitter;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import org.apache.commons.lang.ArrayUtils;
import java.util.List;
import java.util.regex.Pattern;
public class PageUtils {
public static String getValueFromLine(String name, String pageLine) {
return pageLine.replaceAll("^.* " + name + "=\"", "").replaceAll("\".*", "");
}
public static String getPageSource() {
return MobileFactory.getDriver().getPageSource();
}
public static List getPageSourceAsList() {
return Splitter.on("\n").omitEmptyStrings().splitToList(getPageSource().replaceAll("><", ">\n<"));
}
private static Predicate linesContaining(final String... parts) {
return new Predicate() {
@Override
public boolean apply(String input) {
boolean result = true;
for (String part : parts) {
result = result && input.contains(part);
}
return result;
}
};
}
public static List getLinesContaining(final String... parts) {
return getLinesContaining(getPageSourceAsList(), parts);
}
static List getLinesContaining(final Iterable lines, final String... parts) {
return Lists.newArrayList(Iterables.filter(lines, linesContaining(parts)));
}
static List getLinesMatching(Iterable lines, final String regex) {
return Lists.newArrayList(Iterables.filter(lines, new Predicate() {
@Override
public boolean apply(String input) {
return Pattern.matches(regex, input);
}
}));
}
public static List getLinesMatching(final String regex) {
return getLinesMatching(getPageSourceAsList(), regex);
}
public static List getLinesBetween(String[] start, String[] end) {
List source = getPageSourceAsList();
int startLine = 0;
int endLine = source.size() - 1;
if (!ArrayUtils.isEmpty(start)) {
startLine = source.indexOf(getLinesContaining(source, start).get(0));
}
if (!ArrayUtils.isEmpty(end)) {
endLine = source.indexOf(getLinesContaining(source, end).get(0));
if (endLine < 0) {
endLine = source.size() - 1;
}
}
return source.subList(startLine + 1, endLine - 1);
}
public static List getLinesBetween(String start, String end) {
List source = getPageSourceAsList();
int startLine = source.indexOf(getLinesContaining(start).get(0));
int endLine = source.indexOf(getLinesContaining(end).get(0));
return source.subList(startLine + 1, endLine - 1);
}
public static List getNameValues(List linesBetween) {
return Lists.newArrayList(
Iterables.transform(Iterables.filter(linesBetween, linesContaining("name")),
new Function() {
@Override
public String apply(String input) {
return getValueFromLine("name", input);
}
}));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy