Commit b6b24b42 authored by Sascha Girrulat's avatar Sascha Girrulat

Imported Upstream version 2.47.1+dfsg1

parent 6ed83593
......@@ -6,16 +6,15 @@ recursive-include py/selenium/common *.py
recursive-include py/selenium/webdriver/chrome *.py
recursive-include py/selenium/webdriver/opera *.py
recursive-include py/selenium/webdriver/phantomjs *.py
recursive-include py/selenium/webdriver/firefox *.py *.xpi
recursive-include py/selenium/webdriver/firefox *.py *.xpi *.json
recursive-include py/selenium/webdriver/firefox/x86 *.so
recursive-include py/selenium/webdriver/firefox/amd64 *.so
recursive-include py/selenium/webdriver/ie *.py
recursive-include py/selenium/webdriver/ie *.py
recursive-include py/selenium/webdriver/edge *.py
recursive-include py/selenium/webdriver/remote *.py
recursive-include py/selenium/webdriver/support *.py
include py/selenium/selenium.py
include py/selenium/__init__.py
include docs/api/py/index.rst
include py/CHANGES
include py/README
recursive-include selenium.egg-info *
Metadata-Version: 1.1
Name: selenium
Version: 2.29.0
Version: 2.47.1
Summary: Python bindings for Selenium
Home-page: http://code.google.com/p/selenium/
Home-page: https://github.com/SeleniumHQ/selenium/
Author: UNKNOWN
Author-email: UNKNOWN
License: UNKNOWN
Description: ============
Description: ======================
Selenium Client Driver
======================
Introduction
============
:Author: David Burns
Python language bindings for Selenium WebDriver.
The `selenium` package is used automate web browser interaction from Python.
Selenium Python Client Driver is a Python language binding for Selenium Remote
Control (version 1.0 and 2.0).
+-----------+-----------------------------------------------------------------------------------+
| **Home**: | http://www.seleniumhq.org |
+-----------+-----------------------------------------------------------------------------------+
| **Docs**: | `selenium package API <http://selenium.googlecode.com/git/docs/api/py/api.html>`_ |
+-----------+-----------------------------------------------------------------------------------+
| **Dev**: | https://github.com/SeleniumHQ/selenium |
+-----------+-----------------------------------------------------------------------------------+
| **PyPI**: | https://pypi.python.org/pypi/selenium |
+-----------+-----------------------------------------------------------------------------------+
| **IRC**: | **#selenium** channel on freenode |
+-----------+-----------------------------------------------------------------------------------+
Currently the remote protocol, Firefox and Chrome for Selenium 2.0 are
supported, as well as the Selenium 1.0 bindings. As work will progresses we'll
add more "native" drivers.
Several browsers/drivers are supported (Firefox, Chrome, Internet Explorer, PhantomJS), as well as the Remote protocol.
See here_ for more information.
Supported Python Versions
=========================
.. _here: http://code.google.com/p/selenium/
* Python 2.6, 2.7
* Python 3.2, 3.3
Installing
==========
Python Client
-------------
::
If you have `pip <http://www.pip-installer.org>`_ on your system, you can simply install or upgrade the Python bindings::
pip install -U selenium
Java Server
-----------
Alternately, you can download the source distribution from `PyPI <http://pypi.python.org/pypi/selenium>`_ (e.g. selenium-2.47.tar.gz), unarchive it, and run::
python setup.py install
Note: both of the methods described above install `selenium` as a system-wide package That will require administrative/root access to ther machine. You may consider using a `virtualenv <http://www.virtualenv.org/>`_ to create isolated Python environments instead.
Example 0:
==========
* open a new Firefox browser
* load the page at the given URL
Download the server from http://selenium.googlecode.com/files/selenium-server-standalone-2.29.0.jar
::
java -jar selenium-server-standalone-2.29.0.jar
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://seleniumhq.org/')
Example 1:
==========
* open a new Firefox browser
* load the Yahoo homepage
* search for "seleniumhq"
* close the browser
Example
=======
::
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://www.yahoo.com") # Load page
assert "Yahoo!" in browser.title
elem = browser.find_element_by_name("p") # Find the query box
elem.send_keys("seleniumhq" + Keys.RETURN)
time.sleep(0.2) # Let the page load, will be added to the API
try:
browser.find_element_by_xpath("//a[contains(@href,'http://seleniumhq.org')]")
except NoSuchElementException:
assert 0, "can't find seleniumhq"
browser.close()
browser = webdriver.Firefox()
browser.get('http://www.yahoo.com')
assert 'Yahoo' in browser.title
elem = browser.find_element_by_name('p') # Find the search box
elem.send_keys('seleniumhq' + Keys.RETURN)
browser.quit()
Example 2:
==========
Selenium WebDriver is often used as a basis for testing web applications. Here is a simple example uisng Python's standard `unittest <http://docs.python.org/3/library/unittest.html>`_ library:
::
import unittest
class GoogleTestCase(unittest.TestCase):
def setUp(self):
self.browser = webdriver.Firefox()
self.addCleanup(self.browser.quit)
def testPageTitle(self):
self.browser.get('http://www.google.com')
self.assertIn('Google', self.browser.title)
if __name__ == '__main__':
unittest.main(verbosity=2)
Selenium Server (optional)
==========================
For normal WebDriver scripts (non-Remote), the Java server is not needed.
However, to use Selenium Webdriver Remote or the legacy Selenium API (Selenium-RC), you need to also run the Selenium server. The server requires a Java Runtime Environment (JRE).
Download the server separately, from: http://selenium-release.storage.googleapis.com/2.47/selenium-server-standalone-2.47.0.jar
Run the server from the command line::
Documentation
=============
java -jar selenium-server-standalone-2.47.0.jar
`Auto Generated API <http://selenium.googlecode.com/svn/trunk/docs/api/py/api.html>`_
Then run your Python client scripts.
Use The Source Luke!
====================
http://code.google.com/p/selenium/source/browse/trunk/py/selenium/webdriver/remote/webdriver.py
View source code online at https://github.com/SeleniumHQ/selenium/tree/master/py/
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
......@@ -81,3 +138,7 @@ Classifier: Operating System :: MacOS :: MacOS X
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Software Development :: Libraries
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Selenium 2.47.1
* Fix the issue of deleting the profile when shutting down Firefox
* WebElement __eq__ compares against more types
* Issues fixed: 850
Selenium 2.47.0
* Add in support for when communicating with a Spec compliant browsers
* Initial support for Edge using EdgeDriver
* Issues fixed: 818
Selenium 2.46.1
* Adding ability to make remote call for webelement screenshots in accordance to the W3C spec
* Adding api to authenticate HTTP Auth modal dialogs via driver.switch_to.alert (beta)
* Add rebeccapurple to Color Object
* Add element screenshot
* Add service handler and minimal update to driver to use service for Marionette
* Add the ability to start FirefoxDriver backed with Marionette via a capability
* support socket timeout for connections
* free_port checks if port is available on all interfaces
* Allow error handling to handle both current errors and w3c errors
* Update find_elements to match spec
* phantomjs: service: remove unused import of signal
* phantomjs: add port information to WebDriverException
* Issues fixed (Github): 478, 612, 734, 780
Selenium 2.46.0
* Firefox support up to 38
* BlackBerry browser support
* remove Presto-Opera support
* firefox extension extraction fixes
* process management fixes with phantomjs
* Comparing remote web element for equality does not require a remote command
* Issues Fixed: (gcode) 8493, 8521, 8498, 8274, 8497, 5923
* Issues Fixed: (github) 401
Selenium 2.45.0
* Firefox support up to 35, support for native events up to 34.
* Make Opera driver support also the new Blink based Opera
* README: Fix the Yahoo example
* WebElement docstring fixes
* Add debugger_address option to the ChromeDriver options list to optionally instruct ChromeDriver to wait for the target devtools instance to be started at a given host:ip
* Set default value for PhantomJS process reference
* Allow setting of FileDetector for send_keys
* Pass info to TimeoutException in WebDriverWait
* Issues Fixed: 8065, 8310, 8539
Selenium 2.44.0
* (previous release person forgot to add release notes! DAVID!)
Selenium 2.43.0
* Expand WebElement.get_attribute API docs
* firefox may be installed without admininstrator privileges
and therefore there may be no HKEY_LOCAL_MACHINE entry. Issue #7784
* UnexpectedAlertPresentException should contain the alert text in python too. Issue #7745
* don't mutate the global 'ignored exceptions', take a copy of the globally specified ones, change the
global to be a tuple instead. Issue #7725
* raise exception when the firefox binary isn't actually found, which usually implies the upgrade failed (on windows) Issue #6092 ,#6847
* Fixing NameError: global name 'options' is not defined.
* Remove unused import subprocess.PIPE
* Redirect Firefox output to /dev/null by default Fixes Issue #7677
* More flexible management of http timeouts in Selenium RC python client
* Generate Python API docs for selenium.webdriver.chrome.options. Fixes issue #7471
* Use 127.0.0.1 as localhost name resolving might fail on some systems
Selenium 2.42.1
* Fixed Py3 issues
* Make firefox_binary.py and firefox_profile.py not executable
* Make exceptions Python 3 compatible
Selenium 2.42
* Support for Firefox 29 Native Events
* "remote_url" and "remote_browser" parameters for "./go test_remote".
* missing __init__ in new android module
* issue #7304 Fix memory leak caused by __del__ in PhantomJS
* File upload using remotedriver on python3
* Updating xpi install to align with mozprofile
* command_executor should also support unicode strings as well.
Selenium 2.41
* Support for Firefox 28
* deprecating switch_to_* in favour of driver.switch_to.*
Selenium 2.40
* Support for Firefox 27
* Fixes related to http connection
* Fix for phantomjs running on windows #6736
Selenium 2.39
* Support for Firefox 26
Selenium 2.38.4
* keep-alive can't be used for phantomjs / IE, fix for that and tested for py3 :)
Selenium 2.38.3
* really supporting py3 :)
Selenium 2.38.2
* py3 support (once again)
Selenium 2.38.1
* fix packaging problem where firefox/webdriver_prefs.json was missing
Selenium 2.38
* Support for Firefox 25
* FirefoxProfile now using common webdriver.json instead of having our own copy in py
- behavior change to the preferences is that they now should be treated
like raw types rather than strings and allow the json library to translate
the types appropriated (e.g. True => true)
* Set proper 'Accept' request header so that Python bindings work with some old WebDriver implementations that reply 404 to requests with no 'Accept' set.
* handle redirect response explicitly (since switching to using keep-alive)
* phantomjs service needs to really kill the spawned process Issue #5921
* removing old api endpoints from command listing
* using keep-alive for remote connection
* adjusting phantomjs subprocess.Popen
* ActionsChains.send_keys should use <session>/keys endpoint Issue #6348
* fix TypeError in chrome_options.extensions for Python3.x
* Other Bugs Fixed: #6531, #6513, #4569, #6454
Selenium 2.37.2
* fix regression added with unicode fix
* Bug fix #6360
Selenium 2.37.1
* fix find_elements on webelement using unicode locators and py 2.7
Selenium 2.37
* repackage with fix for Firefox native events on Linux
* fix issue with unicode By locators w/ python 2.7 #6430
Selenium 2.36
* Added Safari WebDriver. Fixes issue 5352.
* fix platform for safari caps
* Convert all offsets/coordinates/speeds into integers
* Fix drag and drop by offset behaviour
* Fix initialization of Proxy by capabilities when proxyType is set
* Enable SOCKS proxy support
* Validation of passed locator for find_element(s) methods #5690
* Adding support for /status, /sessions commands
* Doc fixes
* ability to set Chrome extensions by using base64 encoded strings #4013
* fix logic regarding Select.select_by_visible_text #3910
* Bugs fixed: #6165, #6231
Selenium 2.35
* Remove duplicate 'get screenshot as file' methods. Add method 'get_screenshot_as_png'
* fixing UnicodeEncodeError on get attribute of webelement
Selenium 2.34
* Corrected webdriverbackedselenium session handling. Fixes issue 4283
* Corrected use of basestring for python 3. Fixes issue 5924
* Support for Firefox 22
* Added support for logging from the browser
* corrected proxy handling on FirefoxProfile
* Corrected handling of chrome extensions. Fixes issue 5762
Selenium 2.33
* getText() ignores elements in the <head>
* Adding both official and informal string representations to Color object.
* Replace distutils.dir_util by shutil
* Allow finding firefox binary at ProgramFiles(x86) on windows(64 bit)
* Py3 compatible winreg import and content-type access
Selenium 2.32
* Support for FF20 Native Events
* Python 3 support
* Misc Python 3 patches
* Allow easy FirefoxBinary subclassing
Selenium 2.31
* Support for FF19 native events
* web element equality is now in conformance with other language bindings
Selenium 2.30
* Allow env to be specified for the chromedriver service
* Allow log path to be specified for phantomjs driver service.
* Bug Fixes: 4608 4940 4974 5034 5075
Selenium 2.29
* Allow subclassing of driver and have the ability to send_keys Issue 4877, 5017
* Simplifying save_screenshot and allow phantomjs to take screenshots
Selenium 2.28
* "null" can now be passed to executeScript
* Add transparent and extended colour keywords to color support module. Fixes issue 4866
* Add transparent and extended colour keywords to color support module. Fixes issue 4866
Selenium 2.27
* Added support for phantomjs / ghostdriver
......@@ -42,7 +226,7 @@ Selenium 2.21.1
* focusmanager.testmode messes with native events, removing it.
Selenium 2.21
* Local File upload capabilities for non-remote browser
* Local File upload capabilities for non-remote browser
* Adding maximize_window api call
* Updating default firefox profile to set focusmanager.testmode to true
see https://bugzilla.mozilla.org/show_bug.cgi?id=704583
......@@ -168,5 +352,3 @@ Selenium 2 Beta 2
* Improved IEDriver
* Basic Authentication support for Selenium 2
* Ability to have multiple Firefox instances
============
======================
Selenium Client Driver
======================
Introduction
============
:Author: David Burns
Python language bindings for Selenium WebDriver.
Selenium Python Client Driver is a Python language binding for Selenium Remote
Control (version 1.0 and 2.0).
The `selenium` package is used automate web browser interaction from Python.
Currently the remote protocol, Firefox and Chrome for Selenium 2.0 are
supported, as well as the Selenium 1.0 bindings. As work will progresses we'll
add more "native" drivers.
+-----------+-----------------------------------------------------------------------------------+
| **Home**: | http://www.seleniumhq.org |
+-----------+-----------------------------------------------------------------------------------+
| **Docs**: | `selenium package API <http://selenium.googlecode.com/git/docs/api/py/api.html>`_ |
+-----------+-----------------------------------------------------------------------------------+
| **Dev**: | https://github.com/SeleniumHQ/selenium |
+-----------+-----------------------------------------------------------------------------------+
| **PyPI**: | https://pypi.python.org/pypi/selenium |
+-----------+-----------------------------------------------------------------------------------+
| **IRC**: | **#selenium** channel on freenode |
+-----------+-----------------------------------------------------------------------------------+
See here_ for more information.
Several browsers/drivers are supported (Firefox, Chrome, Internet Explorer, PhantomJS), as well as the Remote protocol.
.. _here: http://code.google.com/p/selenium/
Supported Python Versions
=========================
* Python 2.6, 2.7
* Python 3.2, 3.3
Installing
==========
Python Client
-------------
::
If you have `pip <http://www.pip-installer.org>`_ on your system, you can simply install or upgrade the Python bindings::
pip install -U selenium
Java Server
-----------
Alternately, you can download the source distribution from `PyPI <http://pypi.python.org/pypi/selenium>`_ (e.g. selenium-2.47.tar.gz), unarchive it, and run::
python setup.py install
Note: both of the methods described above install `selenium` as a system-wide package That will require administrative/root access to ther machine. You may consider using a `virtualenv <http://www.virtualenv.org/>`_ to create isolated Python environments instead.
Example 0:
==========
* open a new Firefox browser
* load the page at the given URL
Download the server from http://selenium.googlecode.com/files/selenium-server-standalone-2.29.0.jar
::
java -jar selenium-server-standalone-2.29.0.jar
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://seleniumhq.org/')
Example 1:
==========
* open a new Firefox browser
* load the Yahoo homepage
* search for "seleniumhq"
* close the browser
Example
=======
::
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://www.yahoo.com") # Load page
assert "Yahoo!" in browser.title
elem = browser.find_element_by_name("p") # Find the query box
elem.send_keys("seleniumhq" + Keys.RETURN)
time.sleep(0.2) # Let the page load, will be added to the API
try:
browser.find_element_by_xpath("//a[contains(@href,'http://seleniumhq.org')]")
except NoSuchElementException:
assert 0, "can't find seleniumhq"
browser.close()
browser = webdriver.Firefox()
browser.get('http://www.yahoo.com')
assert 'Yahoo' in browser.title
elem = browser.find_element_by_name('p') # Find the search box
elem.send_keys('seleniumhq' + Keys.RETURN)
browser.quit()
Example 2:
==========
Selenium WebDriver is often used as a basis for testing web applications. Here is a simple example uisng Python's standard `unittest <http://docs.python.org/3/library/unittest.html>`_ library:
::
import unittest
class GoogleTestCase(unittest.TestCase):
def setUp(self):
self.browser = webdriver.Firefox()
self.addCleanup(self.browser.quit)
def testPageTitle(self):
self.browser.get('http://www.google.com')
self.assertIn('Google', self.browser.title)
if __name__ == '__main__':
unittest.main(verbosity=2)
Selenium Server (optional)
==========================
For normal WebDriver scripts (non-Remote), the Java server is not needed.
However, to use Selenium Webdriver Remote or the legacy Selenium API (Selenium-RC), you need to also run the Selenium server. The server requires a Java Runtime Environment (JRE).
Download the server separately, from: http://selenium-release.storage.googleapis.com/2.47/selenium-server-standalone-2.47.0.jar
Run the server from the command line::
Documentation
=============
java -jar selenium-server-standalone-2.47.0.jar
`Auto Generated API <http://selenium.googlecode.com/svn/trunk/docs/api/py/api.html>`_
Then run your Python client scripts.
Use The Source Luke!
====================
http://code.google.com/p/selenium/source/browse/trunk/py/selenium/webdriver/remote/webdriver.py
View source code online at https://github.com/SeleniumHQ/selenium/tree/master/py/
# Copyright 2008-2010 WebDriver committers
# Copyright 2008-2010 Google Inc.
# Licensed to the Software Freedom Conservancy (SFC) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The SFC licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
from selenium import selenium
__version__ = "2.29.0"
__version__ = "2.47.1"
# Copyright 2008-2010 WebDriver committers
# Copyright 2008-2010 Google Inc.
# Licensed to the Software Freedom Conservancy (SFC) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The SFC licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import exceptions
\ No newline at end of file
from . import exceptions
# Copyright 2008-2009 WebDriver committers
# Copyright 2008-2009 Google Inc.
# Licensed to the Software Freedom Conservancy (SFC) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The SFC licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
"""
Exceptions that may happen in all the webdriver code.
"""
"""Exceptions that may happen in all the webdriver code."""
class WebDriverException(Exception):
"""
Base webdriver exception.
"""
def __init__(self, msg=None, screen=None, stacktrace=None):
self.msg = msg
self.screen = screen
self.stacktrace = stacktrace
def __str__(self):
exception_msg = "Message: %s " % repr(self.msg)
exception_msg = "Message: %s\n" % self.msg
if self.screen is not None:
exception_msg = "%s; Screenshot: available via screen " \
% exception_msg
exception_msg += "Screenshot: available via screen\n"
if self.stacktrace is not None:
exception_msg = "%s; Stacktrace: %s " \
% (exception_msg, str(self.stacktrace))
stacktrace = "\n".join(self.stacktrace)
exception_msg += "Stacktrace:\n%s" % stacktrace
return exception_msg
class ErrorInResponseException(WebDriverException):
"""An error has occurred on the server side.
"""
Thrown when an error has occurred on the server side.
This may happen when communicating with the firefox extension
or the remote driver server."""
or the remote driver server.
"""
def __init__(self, response, msg):
WebDriverException.__init__(self, msg)
self.response = response
class InvalidSwitchToTargetException(WebDriverException):
"""The frame or window target to be switched doesn't exist."""
"""
Thrown when frame or window target to be switched doesn't exist.
"""
pass
class NoSuchFrameException(InvalidSwitchToTargetException):
"""
Thrown when frame target to be switched doesn't exist.
"""
pass
class NoSuchWindowException(InvalidSwitchToTargetException):
"""
Thrown when window target to be switched doesn't exist.
To find the current set of active window handles, you can get a list
of the active window handles in the following way::
print driver.window_handles
"""
pass
class NoSuchElementException(WebDriverException):
"""find_element_by_* can't find the element."""
"""
Thrown when element could not be found.
If you encounter this exception, you may want to check the following:
* Check your selector used in your find_by...
* Element may not yet be on the screen at the time of the find operation,
(webpage is still loading) see selenium.webdriver.support.wait.WebDriverWait()
for how to write a wait wrapper to wait for an element to appear.
"""
pass
class NoSuchAttributeException(WebDriverException):
"""find_element_by_* can't find the element."""
"""
Thrown when the attribute of element could not be found.
You may want to check if the attribute exists in the particular browser you are
testing against. Some browsers may have different property names for the same
property. (IE8's .innerText vs. Firefox .textContent)
"""
pass
class StaleElementReferenceException(WebDriverException):
"""Indicates that a reference to an element is now "stale" --- the
element no longer appears on the DOM of the page."""