case Condition.SAC_ATTRIBUTE_CONDITION: return "[" + c.getLocalName() + (c.getValue() != null ? "=\"" + c.getValue() + '"' : "") + "]"; case Condition.SAC_ONE_OF_ATTRIBUTE_CONDITION: return "[" + c.getLocalName() + "~=\"" + c.getValue() + "\"]"; case Condition.SAC_BEGIN_HYPHEN_ATTRIBUTE_CONDITION: return "[" + c.getLocalName() + "|=\"" + c.getValue() + "\"]"; case Condition.SAC_ID_CONDITION: return "#" + c.getValue(); case Condition.SAC_CLASS_CONDITION: return "." + c.getValue(); case Condition.SAC_PSEUDO_CLASS_CONDITION: return ":" + c.getValue();
@Override public ConditionSimpleComponent conditionToXPath(ArgumentMap argumentMap, Selector simpleSelector, AttributeCondition attributeCondition) { String wantedClassName = attributeCondition.getValue(); String backslashEscapedClassName = wantedClassName.replaceAll("\\\\\"", "\""); String xPathEscapedClassName = intoEscapedXPathString(" "+backslashEscapedClassName+" "); return new ConditionSimpleComponent("[contains(concat(' ', normalize-space(@class), ' '), " + xPathEscapedClassName + ")]"); }
@Override public ConditionSimpleComponent conditionToXPath(ArgumentMap argumentMap, Selector simpleSelector, AttributeCondition attributeCondition) { String wantedClassName = attributeCondition.getValue(); String backslashEscapedClassName = wantedClassName.replaceAll("\\\\\"", "\""); String xPathEscapedClassName = intoEscapedXPathString(" "+backslashEscapedClassName+" "); return new ConditionSimpleComponent("[contains(concat(' ', normalize-space(@class), ' '), " + xPathEscapedClassName + ")]"); }
/** * [attribute*=stringToContain] * * @author acdcjunior * @since 0.10.0 */ AstCssContainsSubstringAttributeCondition translateContainsSubstring(AttributeCondition attributeCondition) { String attributeName = attributeCondition.getLocalName(); String wantedValue = attributeCondition.getValue(); return new AstCssContainsSubstringAttributeCondition(attributeName, wantedValue); }
/** * [values~="10"] * * @author acdcjunior * @since 0.10.0 */ AstCssContainsWordAttributeCondition translateContainsWord(AttributeCondition attributeCondition) { String attributeName = attributeCondition.getLocalName(); String wantedValue = attributeCondition.getValue(); return new AstCssContainsWordAttributeCondition(attributeName, wantedValue); }
/** * [values~="10"] * * @author acdcjunior * @since 0.10.0 */ AstCssContainsWordAttributeCondition translateContainsWord(AttributeCondition attributeCondition) { String attributeName = attributeCondition.getLocalName(); String wantedValue = attributeCondition.getValue(); return new AstCssContainsWordAttributeCondition(attributeName, wantedValue); }
@Override public ConditionSimpleComponent conditionToXPath(ArgumentMap argumentMap, Selector simpleSelector, AttributeCondition attributeCondition) { String attributeName = AttributeEvaluatorUtils.getXPathAttribute(attributeCondition); String wantedValue = SelectorUtils.intoEscapedXPathString(attributeCondition.getValue()); String wantedValueWithSuffix = SelectorUtils.intoEscapedXPathString(attributeCondition.getValue() + "-"); return new ConditionSimpleComponent("[(" + attributeName + " = " + wantedValue + " or starts-with(" + attributeName + ", " + wantedValueWithSuffix + "))]"); }
/** * [languages|="pt"] * * @author acdcjunior * @since 0.10.0 */ AstCssContainsPrefixAttributeCondition translateAttributeContains(AttributeCondition attributeCondition) { String attributeName = attributeCondition.getLocalName(); String wantedValue = attributeCondition.getValue(); return new AstCssContainsPrefixAttributeCondition(attributeName, wantedValue); }
/** * [languages|="pt"] * * @author acdcjunior * @since 0.10.0 */ AstCssContainsPrefixAttributeCondition translateAttributeContains(AttributeCondition attributeCondition) { String attributeName = attributeCondition.getLocalName(); String wantedValue = attributeCondition.getValue(); return new AstCssContainsPrefixAttributeCondition(attributeName, wantedValue); }
@Override public boolean isCondition(WebDriver driver, WebElement element, ArgumentMap argumentMap, Selector selectorUpToThisPoint, AttributeCondition attributeCondition) { String pseudoClassValue = attributeCondition.getValue(); for (PseudoClass pseudoClass : pseudoClasses) { if (pseudoClass.isApplicable(pseudoClassValue)) { return pseudoClass.isPseudoClass(driver, element, new PseudoClassSelector(argumentMap, selectorUpToThisPoint, pseudoClassValue)); } } System.err.println("Warning: Unsupported pseudo-class: " + pseudoClassValue); return false; }
@Override public boolean isCondition(WebDriver driver, WebElement element, ArgumentMap argumentMap, Selector selectorUpToThisPoint, AttributeCondition attributeCondition) { String pseudoClassValue = attributeCondition.getValue(); for (PseudoClass pseudoClass : pseudoClasses) { if (pseudoClass.isApplicable(pseudoClassValue)) { return pseudoClass.isPseudoClass(driver, element, new PseudoClassSelector(argumentMap, selectorUpToThisPoint, pseudoClassValue)); } } System.err.println("Warning: Unsupported pseudo-class: " + pseudoClassValue); return false; }
@Override public ConditionSimpleComponent conditionToXPath(ArgumentMap argumentMap, Selector simpleSelector, AttributeCondition attributeCondition) { String attributeName = AttributeEvaluatorUtils.getXPathAttribute(attributeCondition); String attrValue = attributeCondition.getValue(); String wantedValue = SelectorUtils.intoEscapedXPathString(attrValue); return new ConditionSimpleComponent("[substring(" + attributeName + ", string-length(" + attributeName + ")-" + (attrValue.length() - 1) + ") = " + wantedValue + "]"); }
@Override public ConditionSimpleComponent conditionToXPath(ArgumentMap argumentMap, Selector simpleSelector, AttributeCondition attributeCondition) { String attributeName = AttributeEvaluatorUtils.getXPathAttribute(attributeCondition); String wantedValue = SelectorUtils.intoEscapedXPathString(attributeCondition.getValue()); return new ConditionSimpleComponent("[contains(" + attributeName + ", " + wantedValue + ")]"); }
@Override public ConditionSimpleComponent conditionToXPath(ArgumentMap argumentMap, Selector simpleSelector, AttributeCondition attributeCondition) { String attributeName = AttributeEvaluatorUtils.getXPathAttribute(attributeCondition); String wantedValue = SelectorUtils.intoEscapedXPathString(attributeCondition.getValue()); return new ConditionSimpleComponent("[starts-with(" + attributeName + ", " + wantedValue + ")]"); }
@Override public ConditionSimpleComponent conditionToXPath(ArgumentMap argumentMap, Selector simpleSelector, AttributeCondition attributeCondition) { String attributeName = AttributeEvaluatorUtils.getXPathAttribute(attributeCondition); String wantedValueSurroundedBySpaces = SelectorUtils.intoEscapedXPathString(" " + attributeCondition.getValue() + " "); return new ConditionSimpleComponent("[contains(concat(' ', normalize-space(" + attributeName + "), ' '), " + wantedValueSurroundedBySpaces + ")]"); }
@Override public ConditionSimpleComponent conditionToXPath(ArgumentMap argumentMap, Selector simpleSelector, AttributeCondition attributeCondition) { String attributeName = AttributeEvaluatorUtils.getXPathAttribute(attributeCondition); String wantedValue = SelectorUtils.intoEscapedXPathString(attributeCondition.getValue()); return new ConditionSimpleComponent("[starts-with(" + attributeName + ", " + wantedValue + ")]"); }
@Override public ConditionSimpleComponent conditionToXPath(ArgumentMap argumentMap, Selector simpleSelector, AttributeCondition attributeCondition) { String attributeName = AttributeEvaluatorUtils.getXPathAttribute(attributeCondition); String wantedValue = SelectorUtils.intoEscapedXPathString(attributeCondition.getValue()); return new ConditionSimpleComponent("[contains(" + attributeName + ", " + wantedValue + ")]"); }
@Override public ConditionSimpleComponent conditionToXPath(ArgumentMap argumentMap, Selector simpleSelector, AttributeCondition attributeCondition) { String attributeName = AttributeEvaluatorUtils.getXPathAttribute(attributeCondition); // [attribute=wantedValue] if (attributeCondition.getSpecified()) { String wantedValue = SelectorUtils.intoEscapedXPathString(attributeCondition.getValue()); return new ConditionSimpleComponent("[" + attributeName + " = " + wantedValue + "]"); } // [attribute] return new ConditionSimpleComponent("[" + attributeName + "]"); }
@Override public ConditionSimpleComponent conditionToXPath(ArgumentMap argumentMap, Selector simpleSelector, AttributeCondition attributeCondition) { String attributeName = AttributeEvaluatorUtils.getXPathAttribute(attributeCondition); // [attribute=wantedValue] if (attributeCondition.getSpecified()) { String wantedValue = SelectorUtils.intoEscapedXPathString(attributeCondition.getValue()); return new ConditionSimpleComponent("[" + attributeName + " = " + wantedValue + "]"); } // [attribute] return new ConditionSimpleComponent("[" + attributeName + "]"); }
@Override public ConditionComponent conditionToXPath(ArgumentMap argumentMap, Selector selectorUpToThisPoint, AttributeCondition attributeCondition) { String pseudoClassValue = attributeCondition.getValue(); for (PseudoClass pseudoClass : pseudoClasses) { if (pseudoClass.isApplicable(pseudoClassValue)) { return pseudoClass.pseudoClassToXPath(new PseudoClassSelector(argumentMap, selectorUpToThisPoint, pseudoClassValue)); } } PseudoClassSelector pseudoClassSelector = new PseudoClassSelector(argumentMap, selectorUpToThisPoint, pseudoClassValue); // right now we'll just exit, hoping to cause less problems throw new UnsupportedPseudoClassException(pseudoClassSelector.getOriginalPseudoClassSelector()); }