public
Description: A XML-RPC service used for examining web pages accessibility
Homepage: http://monotonous.org
Clone URL: git://github.com/eeejay/specular.git
Eitan Isaacson (author)
Fri Oct 17 10:00:16 -0700 2008
commit  5db81bd577c43539a12bac354ea1b9179c59ddda
tree    6523443ea365b973992e9eab69076111b3aa9d51
parent  16bc857fb79a5e003b5198b26d9a91f749c28ea5 parent  ba5358381f847ce8dcafc68519128bffc61b3f74
specular / speclenium_client.py
100644 44 lines (36 sloc) 1.582 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from selenium import selenium
from xmlrpclib import ServerProxy
import time
from xml.dom.minidom import parseString
 
class SpecleniumClient(selenium):
    SPECLENIUM_PORT = 4117
    def start(self):
        self._speclenium_server = \
            ServerProxy('http://%s:%d' % (self.host, self.SPECLENIUM_PORT))
        self._speclenium_server.start(self.browserStartCommand)
        selenium.start(self)
 
    def do_command(self, verb, args):
        self._speclenium_server.flush_event_cache()
        return selenium.do_command(self, verb, args)
 
    def get_accessible_doc(self):
        return self._speclenium_server.get_accessible_doc()
    
    def get_accessible_match(self, match_criteria):
        return self._speclenium_server.get_accessible_match(match_criteria)
 
    def get_accessible_event_match(self, match_criteria, index):
        return self._speclenium_server.get_accessible_event_match(
            match_criteria, index)
 
    def wait_accessible_events(self, events, timeout=3000):
        returned_events = []
        index = 0
        cumulative_time = 0
        for event in events:
            while cumulative_time < timeout:
                e = parseString(self.get_accessible_event_match(event, index))
                if e.documentElement.tagName == 'event':
                    index = \
                        int(e.documentElement.getAttribute('index') or 0) + 1
                    returned_events.append(e.toxml())
                    break
                cumulative_time += 500
                time.sleep(0.5)
 
        return returned_events