I\'ve been using XPath with Selenium quite happily and even using getEval with a but of Javascript, but a colleague said wouldn\'t it be great to be able to use JQuery selec
You can read and execute_script to enable jQuery:
here is some code in python, other language would be similar:
browser = webdriver.Firefox() # Get local session of firefox
with open('jquery.min.js', 'r') as jquery_js: #read the jquery from a file
jquery = jquery_js.read()
browser.execute_script(jquery) #active the jquery lib
#now you can write some jquery code then execute_script them
js = """
var str = "div#myPager table a:[href=\\"javascript:__doPostBack('myPager','%s')\\"]"
console.log(str)
var $next_anchor = $(str);
if ($next_anchor.length) {
return $next_anchor.get(0).click(); //do click and redirect
} else {
return false;
}""" % str(25)
success = browser.execute_script(js)
if success == False:
break
PS: When I use Selenium to fetch some content from some website, they always ban me. Now you should use some proxy to go over it.
here is some code:
PROXY_HOST = "127.0.0.1"
PROXY_PORT = 8087
SOCKS_PORT = 8088
fp = webdriver.FirefoxProfile()
# Direct = 0, Manual = 1, PAC = 2, AUTODETECT = 4, SYSTEM = 5
fp.set_preference("network.proxy.type", 1)
fp.set_preference("network.proxy.http", PROXY_HOST)
fp.set_preference("network.proxy.http_port", PROXY_PORT)
fp.set_preference("network.proxy.socks", PROXY_HOST)
fp.set_preference("network.proxy.socks_port", SOCKS_PORT)
fp.set_preference("network.proxy.ftp", PROXY_HOST)
fp.set_preference("network.proxy.ftp_port", PROXY_PORT)
fp.set_preference("network.proxy.ssl", PROXY_HOST)
fp.set_preference("network.proxy.ssl_port", PROXY_PORT)
fp.set_preference("network.proxy.no_proxies_on", "") # set this value as desired
browser= webdriver.Firefox(firefox_profile=fp) # with proxy
browser = webdriver.Firefox() # no proxy
browser.get("http://search.example.com") # Load page
elem = browser.find_element_by_id("query_box") # Find the query input
elem.send_keys(u'my query string') # send query string to the input
elem.submit() # submit the query form