summaryrefslogtreecommitdiff
path: root/testing/marionette/client/docs
diff options
context:
space:
mode:
Diffstat (limited to 'testing/marionette/client/docs')
-rw-r--r--testing/marionette/client/docs/Makefile153
-rw-r--r--testing/marionette/client/docs/advanced/actions.rst46
-rw-r--r--testing/marionette/client/docs/advanced/debug.rst54
-rw-r--r--testing/marionette/client/docs/advanced/findelement.rst126
-rw-r--r--testing/marionette/client/docs/advanced/landing.rst13
-rw-r--r--testing/marionette/client/docs/advanced/stale.rst71
-rw-r--r--testing/marionette/client/docs/basics.rst185
-rw-r--r--testing/marionette/client/docs/conf.py259
-rw-r--r--testing/marionette/client/docs/index.rst16
-rw-r--r--testing/marionette/client/docs/interactive.rst55
-rw-r--r--testing/marionette/client/docs/make.bat190
-rw-r--r--testing/marionette/client/docs/reference.rst51
12 files changed, 0 insertions, 1219 deletions
diff --git a/testing/marionette/client/docs/Makefile b/testing/marionette/client/docs/Makefile
deleted file mode 100644
index f3d89d6d47..0000000000
--- a/testing/marionette/client/docs/Makefile
+++ /dev/null
@@ -1,153 +0,0 @@
-# Makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line.
-SPHINXOPTS =
-SPHINXBUILD = sphinx-build
-PAPER =
-BUILDDIR = _build
-
-# Internal variables.
-PAPEROPT_a4 = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-# the i18n builder cannot share the environment and doctrees with the others
-I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-
-.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
-
-help:
- @echo "Please use \`make <target>' where <target> is one of"
- @echo " html to make standalone HTML files"
- @echo " dirhtml to make HTML files named index.html in directories"
- @echo " singlehtml to make a single large HTML file"
- @echo " pickle to make pickle files"
- @echo " json to make JSON files"
- @echo " htmlhelp to make HTML files and a HTML help project"
- @echo " qthelp to make HTML files and a qthelp project"
- @echo " devhelp to make HTML files and a Devhelp project"
- @echo " epub to make an epub"
- @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
- @echo " latexpdf to make LaTeX files and run them through pdflatex"
- @echo " text to make text files"
- @echo " man to make manual pages"
- @echo " texinfo to make Texinfo files"
- @echo " info to make Texinfo files and run them through makeinfo"
- @echo " gettext to make PO message catalogs"
- @echo " changes to make an overview of all changed/added/deprecated items"
- @echo " linkcheck to check all external links for integrity"
- @echo " doctest to run all doctests embedded in the documentation (if enabled)"
-
-clean:
- -rm -rf $(BUILDDIR)/*
-
-html:
- $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
- @echo
- @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
-
-dirhtml:
- $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
- @echo
- @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
-
-singlehtml:
- $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
- @echo
- @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
-
-pickle:
- $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
- @echo
- @echo "Build finished; now you can process the pickle files."
-
-json:
- $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
- @echo
- @echo "Build finished; now you can process the JSON files."
-
-htmlhelp:
- $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
- @echo
- @echo "Build finished; now you can run HTML Help Workshop with the" \
- ".hhp project file in $(BUILDDIR)/htmlhelp."
-
-qthelp:
- $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
- @echo
- @echo "Build finished; now you can run "qcollectiongenerator" with the" \
- ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
- @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/MarionettePythonClient.qhcp"
- @echo "To view the help file:"
- @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/MarionettePythonClient.qhc"
-
-devhelp:
- $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
- @echo
- @echo "Build finished."
- @echo "To view the help file:"
- @echo "# mkdir -p $$HOME/.local/share/devhelp/MarionettePythonClient"
- @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/MarionettePythonClient"
- @echo "# devhelp"
-
-epub:
- $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
- @echo
- @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
-
-latex:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo
- @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
- @echo "Run \`make' in that directory to run these through (pdf)latex" \
- "(use \`make latexpdf' here to do that automatically)."
-
-latexpdf:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo "Running LaTeX files through pdflatex..."
- $(MAKE) -C $(BUILDDIR)/latex all-pdf
- @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-text:
- $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
- @echo
- @echo "Build finished. The text files are in $(BUILDDIR)/text."
-
-man:
- $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
- @echo
- @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
-
-texinfo:
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
- @echo
- @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
- @echo "Run \`make' in that directory to run these through makeinfo" \
- "(use \`make info' here to do that automatically)."
-
-info:
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
- @echo "Running Texinfo files through makeinfo..."
- make -C $(BUILDDIR)/texinfo info
- @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
-
-gettext:
- $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
- @echo
- @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
-
-changes:
- $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
- @echo
- @echo "The overview file is in $(BUILDDIR)/changes."
-
-linkcheck:
- $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
- @echo
- @echo "Link check complete; look for any errors in the above output " \
- "or in $(BUILDDIR)/linkcheck/output.txt."
-
-doctest:
- $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
- @echo "Testing of doctests in the sources finished, look at the " \
- "results in $(BUILDDIR)/doctest/output.txt."
diff --git a/testing/marionette/client/docs/advanced/actions.rst b/testing/marionette/client/docs/advanced/actions.rst
deleted file mode 100644
index 294855a6f7..0000000000
--- a/testing/marionette/client/docs/advanced/actions.rst
+++ /dev/null
@@ -1,46 +0,0 @@
-Actions
-=======
-
-.. py:currentmodule:: marionette
-
-Action Sequences
-----------------
-
-:class:`Actions` are designed as a way to simulate user input as closely as possible
-on a touch device like a smart phone. A common operation is to tap the screen
-and drag your finger to another part of the screen and lift it off.
-
-This can be simulated using an Action::
-
- from marionette import Actions
-
- start_element = marionette.find_element('id', 'start')
- end_element = marionette.find_element('id', 'end')
-
- action = Actions(marionette)
- action.press(start_element).wait(1).move(end_element).release()
- action.perform()
-
-This will simulate pressing an element, waiting for one second, moving the
-finger over to another element and then lifting the finger off the screen. The
-wait is optional in this case, but can be useful for simulating delays typical
-to a users behaviour.
-
-Multi-Action Sequences
-----------------------
-
-Sometimes it may be necessary to simulate multiple actions at the same time.
-For example a user may be dragging one finger while tapping another. This is
-where :class:`MultiActions` come in. MultiActions are simply a way of combining
-two or more actions together and performing them all at the same time::
-
- action1 = Actions(marionette)
- action1.press(start_element).move(end_element).release()
-
- action2 = Actions(marionette)
- action2.press(another_element).wait(1).release()
-
- multi = MultiActions(marionette)
- multi.add(action1)
- multi.add(action2)
- multi.perform()
diff --git a/testing/marionette/client/docs/advanced/debug.rst b/testing/marionette/client/docs/advanced/debug.rst
deleted file mode 100644
index e72d2549bd..0000000000
--- a/testing/marionette/client/docs/advanced/debug.rst
+++ /dev/null
@@ -1,54 +0,0 @@
-Debugging
-=========
-
-.. py:currentmodule:: marionette
-
-Sometimes when working with Marionette you'll run into unexpected behaviour and
-need to do some debugging. This page outlines some of the Marionette methods
-that can be useful to you.
-
-Please note that the best tools for debugging are the `ones that ship with
-Gecko`_. This page doesn't describe how to use those with Marionette. Also see
-a related topic about `using the debugger with Marionette`_ on MDN.
-
-.. _ones that ship with Gecko: https://developer.mozilla.org/en-US/docs/Tools
-.. _using the debugger with Marionette: https://developer.mozilla.org/en-US/docs/Marionette/Debugging
-
-
-Storing Logs on the Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-By calling `~Marionette.log` it is possible to store a message on the server.
-Logs can later be retrieved using `~Marionette.get_logs`. For example::
-
- try:
- marionette.log("Sending a click event") # logged at INFO level
- elem.click()
- except:
- marionette.log("Something went wrong!", "ERROR")
-
- print(marionette.get_logs())
-
-Disclaimer: Example for illustrative purposes only, don't actually hide
-tracebacks like that!
-
-
-Seeing What's on the Page
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Sometimes it's difficult to tell what is actually on the page that is being
-manipulated. Either because it happens too fast, the window isn't big enough or
-you are manipulating a remote server! There are two methods that can help you
-out. The first is `~Marionette.screenshot`::
-
- marionette.screenshot() # takes screenshot of entire frame
- elem = marionette.find_element(By.ID, 'some-div')
- marionette.screenshot(elem) # takes a screenshot of only the given element
-
-Sometimes you just want to see the DOM layout. You can do this with the
-`~Marionette.page_source` property. Note that the page source depends on the
-context you are in::
-
- print(marionette.page_source)
- marionette.set_context('chrome')
- print(marionette.page_source)
diff --git a/testing/marionette/client/docs/advanced/findelement.rst b/testing/marionette/client/docs/advanced/findelement.rst
deleted file mode 100644
index abcbc8e89a..0000000000
--- a/testing/marionette/client/docs/advanced/findelement.rst
+++ /dev/null
@@ -1,126 +0,0 @@
-Finding Elements
-================
-.. py:currentmodule:: marionette
-
-One of the most common and yet often most difficult tasks in Marionette is
-finding a DOM element on a webpage or in the chrome UI. Marionette provides
-several different search strategies to use when finding elements. All search
-strategies work with both :func:`~Marionette.find_element` and
-:func:`~Marionette.find_elements`, though some strategies are not implemented
-in chrome scope.
-
-In the event that more than one element is matched by the query,
-:func:`~Marionette.find_element` will only return the first element found. In
-the event that no elements are matched by the query,
-:func:`~Marionette.find_element` will raise `NoSuchElementException` while
-:func:`~Marionette.find_elements` will return an empty list.
-
-Search Strategies
------------------
-
-Search strategies are defined in the :class:`By` class::
-
- from marionette import By
- print(By.ID)
-
-The strategies are:
-
-* `id` - The easiest way to find an element is to refer to its id directly::
-
- container = client.find_element(By.ID, 'container')
-
-* `class name` - To find elements belonging to a certain class, use `class name`::
-
- buttons = client.find_elements(By.CLASS_NAME, 'button')
-
-* `css selector` - It's also possible to find elements using a `css selector`_::
-
- container_buttons = client.find_elements(By.CSS_SELECTOR, '#container .buttons')
-
-* `name` - Find elements by their name attribute (not implemented in chrome
- scope)::
-
- form = client.find_element(By.NAME, 'signup')
-
-* `tag name` - To find all the elements with a given tag, use `tag name`::
-
- paragraphs = client.find_elements(By.TAG_NAME, 'p')
-
-* `link text` - A convenience strategy for finding link elements by their
- innerHTML (not implemented in chrome scope)::
-
- link = client.find_element(By.LINK_TEXT, 'Click me!')
-
-* `partial link text` - Same as `link text` except substrings of the innerHTML
- are matched (not implemented in chrome scope)::
-
- link = client.find_element(By.PARTIAL_LINK_TEXT, 'Clic')
-
-* `xpath` - Find elements using an xpath_ query::
-
- elem = client.find_element(By.XPATH, './/*[@id="foobar"')
-
-.. _css selector: https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors
-.. _xpath: https://developer.mozilla.org/en-US/docs/Web/XPath
-
-
-
-Chaining Searches
------------------
-
-In addition to the methods on the Marionette object, HTMLElement objects also
-provide :func:`~HTMLElement.find_element` and :func:`~HTMLElement.find_elements`
-methods. The difference is that only child nodes of the element will be searched.
-Consider the following html snippet::
-
- <div id="content">
- <span id="main"></span>
- </div>
- <div id="footer"></div>
-
-Doing the following will work::
-
- client.find_element(By.ID, 'container').find_element(By.ID, 'main')
-
-But this will raise a `NoSuchElementException`::
-
- client.find_element(By.ID, 'container').find_element(By.ID, 'footer')
-
-
-Finding Anonymous Nodes
------------------------
-
-When working in chrome scope, for example manipulating the Firefox user
-interface, you may run into something called an anonymous node.
-
-Firefox uses a markup language called XUL_ for its interface. XUL is similar
-to HTML in that it has a DOM and tags that render controls on the display. One
-ability of XUL is to create re-useable widgets that are made up out of several
-smaller XUL elements. These widgets can be bound to the DOM using something
-called the `XML binding language (XBL)`_.
-
-The end result is that the DOM sees the widget as a single entity. It doesn't
-know anything about how that widget is made up. All of the smaller XUL elements
-that make up the widget are called `anonymous content`_. It is not possible to
-query such elements using traditional DOM methods like `getElementById`.
-
-Marionette provides two special strategies used for finding anonymous content.
-Unlike normal elements, anonymous nodes can only be seen by their parent. So
-it's necessary to first find the parent element and then search for the
-anonymous children from there.
-
-* `anon` - Finds all anonymous children of the element, there is no search term
- so `None` must be passed in::
-
- anon_children = client.find_element('id', 'parent').find_elements('anon', None)
-
-* `anon attribute` - Find an anonymous child based on an attribute. An
- unofficial convention is for anonymous nodes to have an
- `anonid` attribute::
-
- anon_child = client.find_element('id', 'parent').find_element('anon attribute', {'anonid': 'container'})
-
-
-.. _XUL: https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL
-.. _XML binding language (XBL): https://developer.mozilla.org/en-US/docs/XBL
-.. _anonymous content: https://developer.mozilla.org/en-US/docs/XBL/XBL_1.0_Reference/Anonymous_Content
diff --git a/testing/marionette/client/docs/advanced/landing.rst b/testing/marionette/client/docs/advanced/landing.rst
deleted file mode 100644
index 0a44de63d7..0000000000
--- a/testing/marionette/client/docs/advanced/landing.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-Advanced Topics
-===============
-
-Here are a collection of articles explaining some of the more complicated
-aspects of Marionette.
-
-.. toctree::
- :maxdepth: 1
-
- findelement
- stale
- actions
- debug
diff --git a/testing/marionette/client/docs/advanced/stale.rst b/testing/marionette/client/docs/advanced/stale.rst
deleted file mode 100644
index 0af5768653..0000000000
--- a/testing/marionette/client/docs/advanced/stale.rst
+++ /dev/null
@@ -1,71 +0,0 @@
-Dealing with Stale Elements
-===========================
-.. py:currentmodule:: marionette
-
-Marionette does not keep a live representation of the DOM saved. All it can do
-is send commands to the Marionette server which queries the DOM on the client's
-behalf. References to elements are also not passed from server to client. A
-unique id is generated for each element that gets referenced and a mapping of
-id to element object is stored on the server. When commands such as
-:func:`~HTMLElement.click()` are run, the client sends the element's id along
-with the command. The server looks up the proper DOM element in its reference
-table and executes the command on it.
-
-In practice this means that the DOM can change state and Marionette will never
-know until it sends another query. For example, look at the following HTML::
-
- <head>
- <script type=text/javascript>
- function addDiv() {
- var div = document.createElement("div");
- document.getElementById("container").appendChild(div);
- }
- </script>
- </head>
-
- <body>
- <div id="container">
- </div>
- <input id="button" type=button onclick="addDiv();">
- </body>
-
-Care needs to be taken as the DOM is being modified after the page has loaded.
-The following code has a race condition::
-
- button = client.find_element('id', 'button')
- button.click()
- assert len(client.find_elements('css selector', '#container div')) > 0
-
-
-Explicit Waiting and Expected Conditions
-----------------------------------------
-
-To avoid the above scenario, manual synchronisation is needed. Waits are used
-to pause program execution until a given condition is true. This is a useful
-technique to employ when documents load new content or change after
-``Document.readyState``'s value changes to "complete".
-
-The :class:`Wait` helper class provided by Marionette avoids some of the
-caveats of ``time.sleep(n)``. It will return immediately once the provided
-condition evaluates to true.
-
-To avoid the race condition in the above example, one could do::
-
- button = client.find_element('id', 'button')
- button.click()
-
- def find_divs():
- return client.find_elements('css selector', '#container div')
-
- divs = Wait(client).until(find_divs)
- assert len(divs) > 0
-
-This avoids the race condition. Because finding elements is a common condition
-to wait for, it is built in to Marionette. Instead of the above, you could
-write::
-
- button = client.find_element('id', 'button')
- button.click()
- assert len(Wait(client).until(expected.elements_present('css selector', '#container div'))) > 0
-
-For a full list of built-in conditions, see :mod:`~marionette.expected`.
diff --git a/testing/marionette/client/docs/basics.rst b/testing/marionette/client/docs/basics.rst
deleted file mode 100644
index 0de72c6256..0000000000
--- a/testing/marionette/client/docs/basics.rst
+++ /dev/null
@@ -1,185 +0,0 @@
-.. py:currentmodule:: marionette_driver.marionette
-
-Marionette Python Client
-========================
-
-The Marionette Python client library allows you to remotely control a
-Gecko-based browser or device which is running a Marionette_
-server. This includes Firefox Desktop and Firefox for Android.
-
-The Marionette server is built directly into Gecko and can be started by
-passing in a command line option to Gecko, or by using a Marionette-enabled
-build. The server listens for connections from various clients. Clients can
-then control Gecko by sending commands to the server.
-
-This is the official Python client for Marionette. There also exists a
-`NodeJS client`_ maintained by the Firefox OS automation team.
-
-.. _Marionette: https://developer.mozilla.org/en-US/docs/Marionette
-.. _NodeJS client: https://github.com/mozilla-b2g/gaia/tree/master/tests/jsmarionette
-
-Getting the Client
-------------------
-
-The Python client is officially supported. To install it, first make sure you
-have `pip installed`_ then run:
-
-.. parsed-literal::
- pip install marionette_driver
-
-It's highly recommended to use virtualenv_ when installing Marionette to avoid
-package conflicts and other general nastiness.
-
-You should now be ready to start using Marionette. The best way to learn is to
-play around with it. Start a `Marionette-enabled instance of Firefox`_, fire up
-a python shell and follow along with the
-:doc:`interactive tutorial <interactive>`!
-
-.. _pip installed: https://pip.pypa.io/en/latest/installing.html
-.. _virtualenv: http://virtualenv.readthedocs.org/en/latest/
-.. _Marionette-enabled instance of Firefox: https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/Builds
-
-Using the Client for Testing
-----------------------------
-
-Please visit the `Marionette Tests`_ section on MDN for information regarding
-testing with Marionette.
-
-.. _Marionette Tests: https://developer.mozilla.org/en/Marionette/Tests
-
-Session Management
-------------------
-A session is a single instance of a Marionette client connected to a Marionette
-server. Before you can start executing commands, you need to start a session
-with :func:`start_session() <Marionette.start_session>`:
-
-.. parsed-literal::
- from marionette_driver.marionette import Marionette
-
- client = Marionette('localhost', port=2828)
- client.start_session()
-
-This returns a session id and an object listing the capabilities of the
-Marionette server. For example, a server running on Firefox Desktop will
-have some features which a server running from Firefox Android won't.
-It's also possible to access the capabilities using the
-:attr:`~Marionette.session_capabilities` attribute. After finishing with a
-session, you can delete it with :func:`~Marionette.delete_session()`. Note that
-this will also happen automatically when the Marionette object is garbage
-collected.
-
-Context Management
-------------------
-Commands can only be executed in a single window, frame and scope at a time. In
-order to run commands elsewhere, it's necessary to explicitly switch to the
-appropriate context.
-
-Use :func:`~Marionette.switch_to_window` to execute commands in the context of a
-new window:
-
-.. parsed-literal::
- original_window = client.current_window_handle
- for handle in client.window_handles:
- if handle != original_window:
- client.switch_to_window(handle)
- print("Switched to window with '{}' loaded.".format(client.get_url()))
- client.switch_to_window(original_window)
-
-Similarly, use :func:`~Marionette.switch_to_frame` to execute commands in the
-context of a new frame (e.g an <iframe> element):
-
-.. parsed-literal::
- iframe = client.find_element(By.TAG_NAME, 'iframe')
- client.switch_to_frame(iframe)
- assert iframe == client.get_active_frame()
-
-Finally Marionette can switch between `chrome` and `content` scope. Chrome is a
-privileged scope where you can access things like the Firefox UI itself.
-Content scope is where things like webpages live. You can switch between
-`chrome` and `content` using the :func:`~Marionette.set_context` and :func:`~Marionette.using_context` functions:
-
-.. parsed-literal::
- client.set_context(client.CONTEXT_CONTENT)
- # content scope
- with client.using_context(client.CONTEXT_CHROME):
- #chrome scope
- ... do stuff ...
- # content scope restored
-
-
-Navigation
-----------
-
-Use :func:`~Marionette.navigate` to open a new website. It's also possible to
-move through the back/forward cache using :func:`~Marionette.go_forward` and
-:func:`~Marionette.go_back` respectively. To retrieve the currently
-open website, use :func:`~Marionette.get_url`:
-
-.. parsed-literal::
- url = 'http://mozilla.org'
- client.navigate(url)
- client.go_back()
- client.go_forward()
- assert client.get_url() == url
-
-
-DOM Elements
-------------
-
-In order to inspect or manipulate actual DOM elements, they must first be found
-using the :func:`~Marionette.find_element` or :func:`~Marionette.find_elements`
-methods:
-
-.. parsed-literal::
- from marionette import HTMLElement
- element = client.find_element(By.ID, 'my-id')
- assert type(element) == HTMLElement
- elements = client.find_elements(By.TAG_NAME, 'a')
- assert type(elements) == list
-
-For a full list of valid search strategies, see :doc:`advanced/findelement`.
-
-Now that an element has been found, it's possible to manipulate it:
-
-.. parsed-literal::
- element.click()
- element.send_keys('hello!')
- print(element.get_attribute('style'))
-
-For the full list of possible commands, see the :class:`HTMLElement`
-reference.
-
-Be warned that a reference to an element object can become stale if it was
-modified or removed from the document. See :doc:`advanced/stale` for tips
-on working around this limitation.
-
-Script Execution
-----------------
-
-Sometimes Marionette's provided APIs just aren't enough and it is necessary to
-run arbitrary javascript. This is accomplished with the
-:func:`~Marionette.execute_script` and :func:`~Marionette.execute_async_script`
-functions. They accomplish what their names suggest, the former executes some
-synchronous JavaScript, while the latter provides a callback mechanism for
-running asynchronous JavaScript:
-
-.. parsed-literal::
- result = client.execute_script("return arguments[0] + arguments[1];",
- script_args=[2, 3])
- assert result == 5
-
-The async method works the same way, except it won't return until a special
-`marionetteScriptFinished()` function is called:
-
-.. parsed-literal::
- result = client.execute_async_script("""
- setTimeout(function() {
- marionetteScriptFinished("all done");
- }, arguments[0]);
- """, script_args=[1000])
- assert result == "all done"
-
-Beware that running asynchronous scripts can potentially hang the program
-indefinitely if they are not written properly. It is generally a good idea to
-set a script timeout using :func:`~Marionette.timeout.script` and handling
-`ScriptTimeoutException`.
diff --git a/testing/marionette/client/docs/conf.py b/testing/marionette/client/docs/conf.py
deleted file mode 100644
index c3a74eef61..0000000000
--- a/testing/marionette/client/docs/conf.py
+++ /dev/null
@@ -1,259 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Marionette Python Client documentation build configuration file, created by
-# sphinx-quickstart on Tue Aug 6 13:54:46 2013.
-#
-# This file is execfile()d with the current directory set to its containing dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-import os
-import sys
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-# sys.path.insert(0, os.path.abspath('.'))
-
-here = os.path.dirname(os.path.abspath(__file__))
-parent = os.path.dirname(here)
-sys.path.insert(0, parent)
-
-# -- General configuration -----------------------------------------------------
-
-# If your documentation needs a minimal Sphinx version, state it here.
-# needs_sphinx = '1.0'
-
-# Add any Sphinx extension module names here, as strings. They can be extensions
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc']
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# The suffix of source filenames.
-source_suffix = '.rst'
-
-# The encoding of source files.
-# source_encoding = 'utf-8-sig'
-
-# The master toctree document.
-master_doc = 'index'
-
-# General information about the project.
-project = u'Marionette Python Client'
-copyright = u'2013, Mozilla Automation and Tools and individual contributors'
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-# version = '0'
-# The full version, including alpha/beta/rc tags.
-# release = '0'
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-# language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-# today = ''
-# Else, today_fmt is used as the format for a strftime call.
-# today_fmt = '%B %d, %Y'
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-exclude_patterns = ['_build']
-
-# The reST default role (used for this markup: `text`) to use for all documents.
-# default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-# add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-# add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-# show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
-# A list of ignored prefixes for module index sorting.
-# modindex_common_prefix = []
-
-
-# -- Options for HTML output ---------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages. See the documentation for
-# a list of builtin themes.
-
-html_theme = 'default'
-
-on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
-
-if not on_rtd:
- try:
- import sphinx_rtd_theme
- html_theme = 'sphinx_rtd_theme'
- html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
- except ImportError:
- pass
-
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further. For a list of options available for each theme, see the
-# documentation.
-# html_theme_options = {}
-
-# Add any paths that contain custom themes here, relative to this directory.
-# html_theme_path = []
-
-# The name for this set of Sphinx documents. If None, it defaults to
-# "<project> v<release> documentation".
-# html_title = None
-
-# A shorter title for the navigation bar. Default is the same as html_title.
-# html_short_title = None
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-# html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-# html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-# html_static_path = ['_static']
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-# html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-# html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-# html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-# html_additional_pages = {}
-
-# If false, no module index is generated.
-# html_domain_indices = True
-
-# If false, no index is generated.
-# html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-# html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-# html_show_sourcelink = True
-
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-# html_show_sphinx = True
-
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-# html_show_copyright = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it. The value of this option must be the
-# base URL from which the finished HTML is served.
-# html_use_opensearch = ''
-
-# This is the file name suffix for HTML files (e.g. ".xhtml").
-# html_file_suffix = None
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'MarionettePythonClientdoc'
-
-
-# -- Options for LaTeX output --------------------------------------------------
-
-latex_elements = {
- # The paper size ('letterpaper' or 'a4paper').
- # 'papersize': 'letterpaper',
-
- # The font size ('10pt', '11pt' or '12pt').
- # 'pointsize': '10pt',
-
- # Additional stuff for the LaTeX preamble.
- # 'preamble': '',
-}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, documentclass [howto/manual]).
-latex_documents = [
- ('index', 'MarionettePythonClient.tex', u'Marionette Python Client Documentation',
- u'Mozilla Automation and Tools team', 'manual'),
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-# latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-# latex_use_parts = False
-
-# If true, show page references after internal links.
-# latex_show_pagerefs = False
-
-# If true, show URL addresses after external links.
-# latex_show_urls = False
-
-# Documents to append as an appendix to all manuals.
-# latex_appendices = []
-
-# If false, no module index is generated.
-# latex_domain_indices = True
-
-
-# -- Options for manual page output --------------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
- ('index', 'marionettepythonclient', u'Marionette Python Client Documentation',
- [u'Mozilla Automation and Tools team'], 1)
-]
-
-# If true, show URL addresses after external links.
-# man_show_urls = False
-
-
-# -- Options for Texinfo output ------------------------------------------------
-
-# Grouping the document tree into Texinfo files. List of tuples
-# (source start file, target name, title, author,
-# dir menu entry, description, category)
-texinfo_documents = [
- ('index', 'MarionettePythonClient', 'Marionette Python Client Documentation',
- 'Mozilla Automation and Tools team', 'MarionettePythonClient',
- 'One line description of project.', 'Miscellaneous'),
-]
-
-# Documents to append as an appendix to all manuals.
-# texinfo_appendices = []
-
-# If false, no module index is generated.
-# texinfo_domain_indices = True
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-# texinfo_show_urls = 'footnote'
diff --git a/testing/marionette/client/docs/index.rst b/testing/marionette/client/docs/index.rst
deleted file mode 100644
index b1f266726c..0000000000
--- a/testing/marionette/client/docs/index.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-.. include:: basics.rst
-
-Indices and tables
-------------------
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
-
-.. toctree::
- :hidden:
-
- Getting Started <basics>
- Interactive Tutorial <interactive>
- advanced/landing
- reference
diff --git a/testing/marionette/client/docs/interactive.rst b/testing/marionette/client/docs/interactive.rst
deleted file mode 100644
index e6d7556134..0000000000
--- a/testing/marionette/client/docs/interactive.rst
+++ /dev/null
@@ -1,55 +0,0 @@
-Using the Client Interactively
-==============================
-
-Once you installed the client and have Marionette running, you can fire
-up your favourite interactive python environment and start playing with
-Marionette. Let's use a typical python shell:
-
-.. parsed-literal::
-
- python
-
-First, import Marionette:
-
-.. parsed-literal::
- from marionette import Marionette
-
-Now create the client for this session. Assuming you're using the default
-port on a Marionette instance running locally:
-
-.. parsed-literal::
-
- client = Marionette(host='localhost', port=2828)
- client.start_session()
-
-This will return some id representing your session id. Now that you've
-established a connection, let's start doing interesting things:
-
-.. parsed-literal::
-
- client.execute_script("alert('o hai there!');")
-
-You should now see this alert pop up! How exciting! Okay, let's do
-something practical. Close the dialog and try this:
-
-.. parsed-literal::
-
- client.navigate("http://www.mozilla.org")
-
-Now you're at mozilla.org! You can even verify it using the following:
-
-.. parsed-literal::
- client.get_url()
-
-You can even find an element and click on it. Let's say you want to get
-the first link:
-
-.. parsed-literal::
- from marionette import By
- first_link = client.find_element(By.TAG_NAME, "a")
-
-first_link now holds a reference to the first link on the page. You can click it:
-
-.. parsed-literal::
- first_link.click()
-
diff --git a/testing/marionette/client/docs/make.bat b/testing/marionette/client/docs/make.bat
deleted file mode 100644
index fb02fc1a8c..0000000000
--- a/testing/marionette/client/docs/make.bat
+++ /dev/null
@@ -1,190 +0,0 @@
-@ECHO OFF
-
-REM Command file for Sphinx documentation
-
-if "%SPHINXBUILD%" == "" (
- set SPHINXBUILD=sphinx-build
-)
-set BUILDDIR=_build
-set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
-set I18NSPHINXOPTS=%SPHINXOPTS% .
-if NOT "%PAPER%" == "" (
- set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
- set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
-)
-
-if "%1" == "" goto help
-
-if "%1" == "help" (
- :help
- echo.Please use `make ^<target^>` where ^<target^> is one of
- echo. html to make standalone HTML files
- echo. dirhtml to make HTML files named index.html in directories
- echo. singlehtml to make a single large HTML file
- echo. pickle to make pickle files
- echo. json to make JSON files
- echo. htmlhelp to make HTML files and a HTML help project
- echo. qthelp to make HTML files and a qthelp project
- echo. devhelp to make HTML files and a Devhelp project
- echo. epub to make an epub
- echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
- echo. text to make text files
- echo. man to make manual pages
- echo. texinfo to make Texinfo files
- echo. gettext to make PO message catalogs
- echo. changes to make an overview over all changed/added/deprecated items
- echo. linkcheck to check all external links for integrity
- echo. doctest to run all doctests embedded in the documentation if enabled
- goto end
-)
-
-if "%1" == "clean" (
- for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
- del /q /s %BUILDDIR%\*
- goto end
-)
-
-if "%1" == "html" (
- %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The HTML pages are in %BUILDDIR%/html.
- goto end
-)
-
-if "%1" == "dirhtml" (
- %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
- goto end
-)
-
-if "%1" == "singlehtml" (
- %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
- goto end
-)
-
-if "%1" == "pickle" (
- %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished; now you can process the pickle files.
- goto end
-)
-
-if "%1" == "json" (
- %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished; now you can process the JSON files.
- goto end
-)
-
-if "%1" == "htmlhelp" (
- %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished; now you can run HTML Help Workshop with the ^
-.hhp project file in %BUILDDIR%/htmlhelp.
- goto end
-)
-
-if "%1" == "qthelp" (
- %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished; now you can run "qcollectiongenerator" with the ^
-.qhcp project file in %BUILDDIR%/qthelp, like this:
- echo.^> qcollectiongenerator %BUILDDIR%\qthelp\MarionettePythonClient.qhcp
- echo.To view the help file:
- echo.^> assistant -collectionFile %BUILDDIR%\qthelp\MarionettePythonClient.ghc
- goto end
-)
-
-if "%1" == "devhelp" (
- %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished.
- goto end
-)
-
-if "%1" == "epub" (
- %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The epub file is in %BUILDDIR%/epub.
- goto end
-)
-
-if "%1" == "latex" (
- %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
- goto end
-)
-
-if "%1" == "text" (
- %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The text files are in %BUILDDIR%/text.
- goto end
-)
-
-if "%1" == "man" (
- %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The manual pages are in %BUILDDIR%/man.
- goto end
-)
-
-if "%1" == "texinfo" (
- %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
- goto end
-)
-
-if "%1" == "gettext" (
- %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
- if errorlevel 1 exit /b 1
- echo.
- echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
- goto end
-)
-
-if "%1" == "changes" (
- %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
- if errorlevel 1 exit /b 1
- echo.
- echo.The overview file is in %BUILDDIR%/changes.
- goto end
-)
-
-if "%1" == "linkcheck" (
- %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
- if errorlevel 1 exit /b 1
- echo.
- echo.Link check complete; look for any errors in the above output ^
-or in %BUILDDIR%/linkcheck/output.txt.
- goto end
-)
-
-if "%1" == "doctest" (
- %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
- if errorlevel 1 exit /b 1
- echo.
- echo.Testing of doctests in the sources finished, look at the ^
-results in %BUILDDIR%/doctest/output.txt.
- goto end
-)
-
-:end
diff --git a/testing/marionette/client/docs/reference.rst b/testing/marionette/client/docs/reference.rst
deleted file mode 100644
index 7d2fc5b00f..0000000000
--- a/testing/marionette/client/docs/reference.rst
+++ /dev/null
@@ -1,51 +0,0 @@
-=============
-API Reference
-=============
-
-Marionette
-----------
-.. autoclass:: marionette_driver.marionette.Marionette
- :members:
-
-HTMLElement
------------
-.. autoclass:: marionette_driver.marionette.HTMLElement
- :members:
-
-DateTimeValue
--------------
-.. autoclass:: marionette_driver.DateTimeValue
- :members:
-
-Actions
--------
-.. autoclass:: marionette_driver.marionette.Actions
- :members:
-
-MultiActions
-------------
-.. autoclass:: marionette_driver.marionette.MultiActions
- :members:
-
-Wait
-----
-.. autoclass:: marionette_driver.Wait
- :members:
- :special-members:
-.. autoattribute marionette_driver.wait.DEFAULT_TIMEOUT
-.. autoattribute marionette_driver.wait.DEFAULT_INTERVAL
-
-Built-in Conditions
-^^^^^^^^^^^^^^^^^^^
-.. automodule:: marionette_driver.expected
- :members:
-
-Addons
-------
-.. autoclass:: marionette_driver.addons.Addons
- :members:
-
-Localization
-------------
-.. autoclass:: marionette_driver.localization.L10n
- :members: