Beispiel #1
0
 def _get_firstChild(self):
     # accNavigate incorrectly returns nothing for NAVDIR_FIRSTCHILD and requesting one child with AccessibleChildren causes a crash.
     # Therefore, we must use accChild(1).
     child = IAccessibleHandler.accChild(self.IAccessibleObject, 1)
     if not child:
         return None
     return IAccessible(IAccessibleObject=child[0], IAccessibleChildID=child[1])
Beispiel #2
0
def locateHTMLElementByID(document,ID):
	try:
		element=document.getElementsByName(ID).item(0)
	except COMError as e:
		log.debugWarning("document.getElementsByName failed with COMError %s"%e)
		element=None
	if element:
		return element
	try:
		nodeName=document.body.nodeName
	except COMError as e:
		log.debugWarning("document.body.nodeName failed with COMError %s"%e)
		return None
	if nodeName=="FRAMESET":
		tag="frame"
	else:
		tag="iframe"
	try:
		frames=document.getElementsByTagName(tag)
	except COMError as e:
		log.debugWarning("document.getElementsByTagName failed with COMError %s"%e)
		return None
	for frame in frames:
		pacc=IAccessibleFromHTMLNode(frame)
		res=IAccessibleHandler.accChild(pacc,1)
		if not res: continue
		childElement=HTMLNodeFromIAccessible(res[0])
		if not childElement: continue
		childElement=locateHTMLElementByID(childElement.document,ID)
		if not childElement: continue
		return childElement
Beispiel #3
0
	def _get_firstChild(self):
		# accNavigate incorrectly returns nothing for NAVDIR_FIRSTCHILD and requesting one child with AccessibleChildren causes a crash.
		# Therefore, we must use accChild(1).
		child = IAccessibleHandler.accChild(self.IAccessibleObject, 1)
		if not child:
			return None
		return IAccessible(IAccessibleObject=child[0], IAccessibleChildID=child[1])
Beispiel #4
0
def getChildHTMLNodeFromFrame(frame):
    try:
        pacc = IAccessibleFromHTMLNode(frame)
    except NotImplementedError:
        # #1569: It's not possible to get an IAccessible from frames marked with an ARIA role of presentation.
        # In this case, just skip this frame.
        return
    res = IAccessibleHandler.accChild(pacc, 1)
    if not res: return
    return HTMLNodeFromIAccessible(res[0])
def getChildHTMLNodeFromFrame(frame):
	try:
		pacc=IAccessibleFromHTMLNode(frame)
	except NotImplementedError:
		# #1569: It's not possible to get an IAccessible from frames marked with an ARIA role of presentation.
		# In this case, just skip this frame.
		return
	res=IAccessibleHandler.accChild(pacc,1)
	if not res: return
	return HTMLNodeFromIAccessible(res[0])
Beispiel #6
0
def locateHTMLElementByID(document, ID):
    try:
        elements = document.getElementsByName(ID)
        if elements is not None:
            element = elements.item(0)
        else:  # probably IE 10 in standards mode (#3151)
            try:
                element = document.all.item(ID)
            except:
                element = None
    except COMError as e:
        log.debugWarning("document.getElementsByName failed with COMError %s" % e)
        element = None
    if element:
        return element
    try:
        nodeName = document.body.nodeName
    except COMError as e:
        log.debugWarning("document.body.nodeName failed with COMError %s" % e)
        return None
    if nodeName:
        nodeName = nodeName.upper()
    if nodeName == "FRAMESET":
        tag = "frame"
    else:
        tag = "iframe"
    try:
        frames = document.getElementsByTagName(tag)
    except COMError as e:
        log.debugWarning("document.getElementsByTagName failed with COMError %s" % e)
        return None
    if not frames:  # frames can be None in IE 10
        return None
    for frame in frames:
        try:
            pacc = IAccessibleFromHTMLNode(frame)
        except NotImplementedError:
            # #1569: It's not possible to get an IAccessible from frames marked with an ARIA role of presentation.
            # In this case, just skip this frame.
            continue
        res = IAccessibleHandler.accChild(pacc, 1)
        if not res:
            continue
        childElement = HTMLNodeFromIAccessible(res[0])
        if not childElement:
            continue
        childElement = locateHTMLElementByID(childElement.document, ID)
        if not childElement:
            continue
        return childElement