Example #1
0
 public static object SetToggleState(ElementRequest request) {
     if (request.Body.ContainsKey("state"))
         request.Target.ToggleState = Convert.ToBoolean(request.Body["state"]);
     else
         request.Target.Toggle();
     return request.Target.ToggleState;
 }
Example #2
0
        public static object SendKeys(ElementRequest request) {
            string text = (string)request.Body["keys"];
            request.Target.Focus();
            try {
	            System.Windows.Forms.SendKeys.SendWait(text);
            } catch {
            	// if the argument is invalid (e.g. foo{XYZ}) then the "foo" gets kept in a buffer 
            	// and sent with the next SendKeys. ideally we could flush this somehow but 
            	// making sure it's sent now is better than nothing
            	try { System.Windows.Forms.SendKeys.SendWait(""); } catch {}
            	throw;
            }
            return null;
        }
Example #3
0
File: Dump.cs Project: kevtham/twin
        public static object GetStructure(ElementRequest request) {
            bool verbose = request.Body != null && request.Body.ContainsKey("verbose") && (bool)request.Body["verbose"];

            XmlDocument doc = new XmlDocument();
            STAHelper.Invoke(
            	delegate() {
		            Add(doc, doc, request.Target, verbose);
            	}
            );

            StringWriter writer = new StringWriter();
            XmlTextWriter xmlWriter = new XmlTextWriter(writer);
            xmlWriter.Formatting = Formatting.Indented;
            xmlWriter.Indentation = 2;
            doc.WriteTo(xmlWriter);

            return writer.ToString();
        }
Example #4
0
 public static object PollExists(ElementRequest request) {
     bool target = (bool)request.Body["value"];
     double timeout = request.Body.ContainsKey("timeout") ? Convert.ToDouble(request.Body["timeout"]) : 0;
     if(timeout > 0) {
         Logging.Logger.Current.Trace("Waiting up to {0} for exists={1}", timeout, target);
         long startTicks = DateTime.Now.Ticks;
         long targetTicks = startTicks + (long)(10000000 * timeout);
         while (true) {
             if (request.Target.Exists == target)
                 break;
             int deficitMs = (int) (targetTicks - DateTime.Now.Ticks) / 10000;
             if (deficitMs <= 0)
                 break;
             System.Threading.Thread.Sleep((int)Math.Min(deficitMs, (int)(PollInterval * 1000)));
         }
     }
     bool exists = request.Target.Exists;
     Logging.Logger.Current.Trace("Finished waiting, element exists={0}", exists);
     if (exists != target)
         throw new TwinException(ResponseStatus.InvalidElementState, "Element did not reach exists state " + target);
     return null;
 }
Example #5
0
 public static object GetName(ElementRequest request) {
     return request.Target.Name;
 }
Example #6
0
 public static object SetSelected(ElementRequest request) {
     request.Target.Selected = (bool)request.Body["selected"];
     return null;
 }
Example #7
0
 public static object Close(ElementRequest request) {
     request.Target.Close();
     return null;
 }
Example #8
0
 public static object GetScrollPosition(ElementRequest request) {
     ScrollAxis axis = (ScrollAxis)request.Session[new Guid(request.Parameters["axis"])];
     return axis.Position;
 }
Example #9
0
 public static object SetLocation(ElementRequest request) {
     double x = Convert.ToDouble(request.Body["x"]);
     double y = Convert.ToDouble(request.Body["y"]);
     request.Target.Location = new Point(x, y);
     return null;
 }
Example #10
0
 public static object SetSize(ElementRequest request) {
     double width = Convert.ToDouble(request.Body["width"]);
     double height = Convert.ToDouble(request.Body["height"]);
     request.Target.Size = new Size(width, height);
     return null;
 }
Example #11
0
 public static object GetValueOptions(ElementRequest request) {
     JSONResponse response = new JSONResponse();
     if (request.Target.IsValueReadOnly()) {
         response.Options = new string[] { "GET", "POST", "OPTIONS" };
     } else {
         response.Options = new string[] { "GET", "OPTIONS" };
     }
     return response;
 }
Example #12
0
 public static object SetValue(ElementRequest request) {
     request.Target.Value = (string)request.Body["value"];
     return null;
 }
Example #13
0
 public static object SetExpanded(ElementRequest request) {
     request.Target.Expanded = (bool)request.Body["expanded"];
     return null;
 }
Example #14
0
 public static object GetExpanded(ElementRequest request) {
     return request.Target.Expanded;
 }
Example #15
0
 public static object GetValue(ElementRequest request) {
     return request.Target.Value;
 }
Example #16
0
 public static object Scroll(ElementRequest request) {
     ScrollAxis axis = (ScrollAxis)request.Session[new Guid(request.Parameters["axis"])];
     double position = Convert.ToDouble(request.Body["position"]);
     axis.Position = position;
     return null;
 }
Example #17
0
 public static object GetBounds(ElementRequest request) {
     Dictionary<string, object> data = new Dictionary<string, object>();
     Rect bounds = request.Target.Bounds;
     data["width"] = bounds.Width;
     data["height"] = bounds.Height;
     data["x"] = bounds.X;
     data["y"] = bounds.Y;
     return data;
 }
Example #18
0
 public static object GetScrollerY(ElementRequest request) {
     return PersistedObject.Get(request.Target.GetScrollAxis(OrientationType.Vertical), request.Session);
 }
Example #19
0
 public static object SetBounds(ElementRequest request) {
     double x = Convert.ToDouble(request.Body["x"]);
     double y = Convert.ToDouble(request.Body["y"]);
     double width = Convert.ToDouble(request.Body["width"]);
     double height = Convert.ToDouble(request.Body["height"]);
     request.Target.Bounds = new Rect(x, y, width, height);
     return null;
 }
Example #20
0
 public static object GetExists(ElementRequest request) {
     return request.Target.Exists;
 }
Example #21
0
 public static object GetWindowState(ElementRequest request) {
     return request.Target.WindowState.ToString();
 }
Example #22
0
 public static object GetParent(ElementRequest request) {
     return PersistedObject.Get(request.Target.Parent, request.Session);
 }
Example #23
0
 public static object SetWindowState(ElementRequest request) {
     request.Target.WindowState = (WindowVisualState)Enum.Parse(typeof(WindowVisualState), (string)request.Body["state"], true);
     return null;
 }
Example #24
0
 public static object GetToggleState(ElementRequest request) {
     return request.Target.ToggleState;
 }
Example #25
0
 public static object GetSelectionContainer(ElementRequest request) {
     return PersistedObject.Get(request.Target.SelectionContainer, request.Session);
 }
Example #26
0
 public static object GetSelected(ElementRequest request) {
     return request.Target.Selected;
 }
Example #27
0
        public static object GetSelection(ElementRequest request) {
            Dictionary<string, object> result = new Dictionary<string, object>();
            result["multiple"] = request.Target.SelectionAllowsMultiple;
            result["required"] = request.Target.SelectionIsRequired;

            List<object> values = new List<object>();
            foreach (Element elt in request.Target.Selection)
                values.Add(PersistedObject.Get(elt, request.Session));
            result["values"] = values;
            return result;
        }
Example #28
0
 public static object GetEnabled(ElementRequest request) {
     return request.Target.Enabled;
 }
Example #29
0
        public static object GetScreenshot(ElementRequest request) {
            Dictionary<string, object> data = new Dictionary<string, object>();

            Rect defaultRect = new Rect(0, 0, 0, 0);
            Rect bounds = defaultRect;
            if (request.Body != null) {
                if (request.Body.ContainsKey("x"))
                    bounds.X = Convert.ToDouble(request.Body["x"]);
                if (request.Body.ContainsKey("y"))
                    bounds.Y = Convert.ToDouble(request.Body["y"]);
                if (request.Body.ContainsKey("width"))
                    bounds.Width = Convert.ToDouble(request.Body["width"]);
                if (request.Body.ContainsKey("height"))
                    bounds.Height = Convert.ToDouble(request.Body["height"]);
            }

            System.Drawing.Bitmap bitmap = (bounds == defaultRect) ? request.Target.CaptureScreenshot() : request.Target.CaptureScreenshot(bounds);            
            byte[] imageData = BitmapToPNG(bitmap);
            bitmap.Dispose();
            
            data["contentType"] = "image/png";
            data["data"] = Convert.ToBase64String(imageData);
            return data;
        }
Example #30
0
 public virtual object Respond(ElementRequest request)
 {
     return(handler(request));
 }
Example #31
0
        public static object Click(ElementRequest request) {
            int button = 0;
            double x = double.NaN;
            double y = double.NaN;

            if (request.Body != null) {
                if (request.Body.ContainsKey("x"))
                    x = Convert.ToDouble(request.Body["x"]);
                if (request.Body.ContainsKey("y"))
                    y = Convert.ToDouble(request.Body["y"]);
                if (request.Body.ContainsKey("button")) {
                    switch (((string)request.Body["button"]).ToLowerInvariant()) {
                        case "left":
                            button = 1;
                            break;
                        case "right":
                            button = 2;
                            break;
                        case "middle":
                            button = 3;
                            break;
                        default:
                            throw new ArgumentOutOfRangeException("button", request.Body["button"], "Should be left/middle/right");
                    }
                }
            }

            if (button == 0 && double.IsNaN(x) && double.IsNaN(y)) {
                request.Target.Click();
            } else {
                if (button == 0)
                    button = 1;

                if (double.IsNaN(x) && double.IsNaN(y)) {
                    request.Target.Click(button);
                } else if (double.IsNaN(x) || double.IsNaN(y)) {
                    throw new ArgumentNullException((double.IsNaN(x) ? "x" : "y"), "If either x or y is set, both must be");
                } else {
                    request.Target.Click(button, x, y);
                }
            }
            return null;
        }