.. _faq:
Appendix: Frequently Asked Questions
------------------------------------
Another FAQ: https://github.com/SeleniumHQ/selenium/wiki/Frequently-Asked-Questions
How to use ChromeDriver ?
~~~~~~~~~~~~~~~~~~~~~~~~~
Download the latest `chromedriver from download page
`_. Unzip the
file::
unzip chromedriver_linux64.zip
You should see a ``chromedriver`` executable. Now you can create an instance of
Chrome WebDriver like this::
driver = webdriver.Chrome(executable_path="/path/to/chromedriver")
The rest of the example should work as given in other documentation.
Does Selenium 2 support XPath 2.0 ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ref: http://seleniumhq.org/docs/03_webdriver.html#how-xpath-works-in-webdriver
Selenium delegates XPath queries down to the browser's own XPath engine, so
Selenium support XPath supports whatever the browser supports. In browsers
which don't have native XPath engines (IE 6,7,8), Selenium supports XPath 1.0
only.
How to scroll down to the bottom of a page ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ref: http://blog.varunin.com/2011/08/scrolling-on-pages-using-selenium.html
You can use the `execute_script` method to execute javascript on the loaded
page. So, you can call the JavaScript API to scroll to the bottom or any other
position of a page.
Here is an example to scroll to the bottom of a page::
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
The `window `_ object in DOM has
a `scrollTo `_ method to
scroll to any position of an opened window. The `scrollHeight
`_ is a common property for all
elements. The `document.body.scrollHeight` will give the height of the entire
body of the page.
How to auto save files using custom Firefox profile ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ref: http://stackoverflow.com/questions/1176348/access-to-file-download-dialog-in-firefox
Ref: http://blog.codecentric.de/en/2010/07/file-downloads-with-selenium-mission-impossible/
The first step is to identify the type of file you want to auto save.
To identify the content type you want to download automatically, you
can use `curl `_::
curl -I URL | grep "Content-Type"
Another way to find content type is using the `requests
`_ module, you can use it like this::
import requests
content_type = requests.head('http://www.python.org').headers['content-type']
print(content_type)
Once the content type is identified, you can use it to set the firefox profile
preference: ``browser.helperApps.neverAsk.saveToDisk``
Here is an example::
import os
from selenium import webdriver
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", os.getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")
browser = webdriver.Firefox(firefox_profile=fp)
browser.get("http://pypi.python.org/pypi/selenium")
browser.find_element_by_partial_link_text("selenium-2").click()
In the above example, ``application/octet-stream`` is used as the content type.
The ``browser.download.dir`` option specify the directory where you want to
download the files.
How to upload files into file inputs ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Select the ```` element and call the ``send_keys()`` method
passing the file path, either the path relative to the test script, or an
absolute path. Keep in mind the differences in path names between Windows and
Unix systems.
How to use firebug with Firefox ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
First download the Firebug XPI file, later you call the ``add_extension`` method
available for the firefox profile::
from selenium import webdriver
fp = webdriver.FirefoxProfile()
fp.add_extension(extension='firebug-1.8.4.xpi')
fp.set_preference("extensions.firebug.currentVersion", "1.8.4") #Avoid startup screen
browser = webdriver.Firefox(firefox_profile=fp)
How to take screenshot of the current window ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Use the `save_screenshot` method provided by the webdriver::
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.python.org/')
driver.save_screenshot('screenshot.png')
driver.quit()