private string ClickPath(AccessibilityHelper ah, GuiPath gpath) { //bool forAll = false; //bool clickParent = false; //AccessibilityHelper child; //if (m_for != null && "all" == (string)m_for) forAll = true; if (1 == m_logLevel) m_log.paragraph(makeNameTag() + "Click starting path from "" + ah.Role + ":" + ah.Name + """); ah = gpath.FindInGui(ah, this); if (ah != null) { if (1 == m_logLevel) m_log.paragraph(makeNameTag() + "Clicking last pair in path"); int j; for (j = 0; j < m_repeat; j++) { // click 10 pixels from the left edge - see below if (m_side == "right") ah.SimulateRightClickRelative(m_dx, m_dy); else ah.SimulateClickRelative(m_dx, m_dy); // when @wait="no" don't wait at all between repeated clicks if (m_wait) Thread.Sleep(400); // wait a while eg. let menus open, etc. } m_finished = true; // tell do-once it's done } else return m_message; return ""; }
/// <summary> /// method to apply when a non-terminal node has been found /// </summary> /// <param name="ah"></param> public void visitNode(AccessibilityHelper ah) { // does this ah need to be clicked or something to get to its children? if (1 == m_logLevel) m_log.paragraph(makeNameTag() + "Click found "" + ah.Role + ":" + ah.Name + """); if ((ah.Role == AccessibleRole.MenuItem) || (m_for != null && "all" == (string)m_for)) { if (1 == m_logLevel) m_log.paragraph(makeNameTag() + "Click determining what to do with this intermediate step"); bool isFocused = (ah.States & AccessibleStates.Focused) == AccessibleStates.Focused; if (!isFocused) { if (1 == m_logLevel) m_log.paragraph(makeNameTag() + "Clicking relative to "" + ah.Role + ":" + ah.Name + "" by (" + m_dx + ", " + m_dy + ") since it does not have focus"); ah.SimulateClickRelative(m_dx, m_dy); } else { if (1 == m_logLevel) m_log.paragraph(makeNameTag() + "Click hovering on "" + ah.Role + ":" + ah.Name + "" since it has focus"); ah.MoveMouseOverMe(); // hover } } }