Add a new WebElement selection strategy to Selenium 2 by extending the By class.
public class ByJQuerySelector extends By {
private final String jQuerySelector;
public ByJQuerySelector(String selector) {
this.jQuerySelector = selector;
}
@Override
public List findElements(SearchContext context) {
//TODO:Implement
return null;
}
@Override
public WebElement findElement(SearchContext context) {
return (RemoteWebElement) ((JavascriptExecutor) context)
.executeScript("return $('" + jQuerySelector+ "').get(0);");
}
@Override
public String toString() {
return "By.jQuerySelector: " + jQuerySelector;
}
}
Now you can select a WebElement with a JQuery selector.
@Test
public void example6(){
driver.get("http://www.o2.co.uk/broadband");
//Now I can use JQuery selectors to find elements on the page!
By loc = new ByJQuerySelector("a[title=Sign In]");
driver.findElement(loc).click();
assertEquals("O2 - Sign in - View bills , balances and emails in your My O2 account:",driver.getTitle());
}
Today’s blog post is from O2 Broadband. Special thanks for their support.