-
-
Notifications
You must be signed in to change notification settings - Fork 184
Closed
Description
I am using an xpath that includes a special character and the xpath is working in Firefox but failing in HtmlUnit when called via the driver.
What is odd is that it works for "@x" but fails for "@x" - case sensitivity breaks it somehow. Its also interesting that I noticed this earlier when searching for "=)" as part of a string, I presume there are other special cases that are not working correctly.
Edit: tested more and same issue with ")X" but lowercase x works fine.
The code I used to test
public class HtmlUnitXpath {
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver", "\\geckodriver.exe");
FirefoxOptions options = new FirefoxOptions();
options.setLogLevel(FirefoxDriverLogLevel.FATAL);
WebDriver ffDriver = new FirefoxDriver(options);
WebDriver huDriver = new HtmlUnitDriver(BrowserVersion.FIREFOX, true) {
@Override
protected WebClient modifyWebClient(WebClient client) {
final WebClient webClient = super.modifyWebClient(client);
WebClientOptions options = webClient.getOptions();
options.setCssEnabled(true);
options.setThrowExceptionOnScriptError(false);
webClient.setJavaScriptErrorListener(new SilentJavaScriptErrorListener());
return webClient;
}
};
try {
doStuff(ffDriver);
doStuff(huDriver);
} finally {
ffDriver.close();
huDriver.close();
}
}
private static void doStuff(WebDriver driver) {
String misbehavingString = "@X";
String pageAsText = "<body><table><tr><td>" + misbehavingString + "</td></tr></table></body>";
driver.get("data:text/html;charset=utf-8," + pageAsText);
String text = driver.findElement(By.xpath("//body")).getText();
System.out.println(driver.getClass().getName() + " printed " + text);
int numberOfOccurences = driver.findElements(By.xpath("//td[normalize-space()='" + misbehavingString + "']")).size();
System.out.println(driver.getClass().getName() + " found " + numberOfOccurences);
}
}Metadata
Metadata
Assignees
Labels
No labels