Reputation: 3802
I am just starting with selenium.
I made a simple python script that should open a url and print the price of a product there.
Here it is:
from selenium import webdriver
import time
driver = webdriver.PhantomJS(executable_path='/usr/bin/phantomjs')
url = 'http://www.stance.com/shop/product/paint-trap'
print "Driver Made"
driver.get(url)
print "URL got"
price = driver.find_element_by_xpath('//*[@id="h1--title-price"]/span[2]').text
print price
driver.close()
But, it just prints: "Driver Made" and never prints "URL got" nor the price.
It seems to be getting stuck on the driver.get(url), but I don't know why.
I would like to know how to print the price and how to stop driver.get(url) from running eternally.
If I interrupt it with a ctrl C, i get:
Driver Made
^CTraceback (most recent call last):
File "test.py", line 6, in <module>
driver.get(url)
File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 213, in get
self.execute(Command.GET, {'url': url})
File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 199, in execute
response = self.command_executor.execute(driver_command, params)
File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/remote_connection.py", line 395, in execute
return self._request(command_info[0], url, body=data)
File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/remote_connection.py", line 463, in _request
resp = opener.open(request, timeout=self._timeout)
File "/usr/local/lib/python2.7/urllib2.py", line 404, in open
response = self._open(req, data)
File "/usr/local/lib/python2.7/urllib2.py", line 422, in _open
'_open', req)
File "/usr/local/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/usr/local/lib/python2.7/urllib2.py", line 1214, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/local/lib/python2.7/urllib2.py", line 1187, in do_open
r = h.getresponse(buffering=True)
File "/usr/local/lib/python2.7/httplib.py", line 1045, in getresponse
response.begin()
File "/usr/local/lib/python2.7/httplib.py", line 409, in begin
version, status, reason = self._read_status()
File "/usr/local/lib/python2.7/httplib.py", line 365, in _read_status
line = self.fp.readline(_MAXLINE + 1)
File "/usr/local/lib/python2.7/socket.py", line 476, in readline
data = self._sock.recv(self._rbufsize)
KeyboardInterrupt
Upvotes: 0
Views: 2564
Reputation: 5292
Working code prints- (in windows).
Driver Made
URL got
$14.00
Working code as below
from selenium import webdriver
import time
driver = webdriver.PhantomJS(executable_path=r"C:\Users\Desktop\phantomjs.exe")
driver.set_window_size(1120, 550)
url = 'http://www.stance.com/shop/product/paint-trap'
print "Driver Made"
driver.get(url)
print "URL got"
driver.implicitly_wait(5)
price = driver.find_elements_by_xpath("(//*[@id='h1--title-price']/span)[2]")
for i in price:
print i.text
driver.close()
N.B. Make sure phantom executable path and selenium library is correct in other oses.
Upvotes: 1