コード例 #1
0
        private static bool FindElementFromRoot(string body, List <GameObject> root, HttpListenerResponse response)
        {
            FindBody findRequest = ParseFindElementBody(body, response);

            if (findRequest == null)
            {
                return(true);
            }

            Component found = null;

            //need to go use all root objects
            //as context
            foreach (var rgo in root)
            {
                var resp = parser.Evaluate(findRequest.selector, rgo);

                if (resp.Count != 0)
                {
                    found = resp [0];
                    break;
                }
            }

            //no results found
            if (found == null)
            {
                if (WebDriverManager.instance.ImplicitTimeout == 0)
                {
                    WebDriverManager.instance.WriteElementNotFound(response);
                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            string uuid = System.Guid.NewGuid().ToString();

            uuid = WebDriverManager.instance.AddElement(found, uuid);

            Dictionary <string, string> attributes = ComponentAttributes.Attributes(found.GetType(), found);

            StringBuilder jsonRepr = new StringBuilder("{");

            jsonRepr.AppendFormat("\"name\":\"{0}\",", found.name);

            foreach (var attr in attributes)
            {
                jsonRepr.AppendFormat("\"{0}\":\"{1}\", ", attr.Key, attr.Value);
            }

            jsonRepr.AppendFormat("\"{0}\":\"{1}\"", WebElementIdentifierKey, uuid);

            jsonRepr.Append("}");

            WriteElementList(response, new List <string> {
                jsonRepr.ToString()
            });

            return(true);
        }
コード例 #2
0
        private void ParserEvaluateTest()
        {
            Debug.Log("start evaluate test");

            var parser = new XPathParser();

            float startTime = Time.realtimeSinceStartup;

            GameObject root = GameObject.Find("TestText");

            var results = parser.Evaluate("/button", root);

            Debug.Assert(results.Count == 1);
            Debug.Assert(results[0].name == "TestText");

            results = parser.Evaluate("//button//text", root);

            Debug.Assert(results.Count == 1);
            Debug.Assert(results[0].name == "Text");

            results = parser.Evaluate("/text", root);

            Debug.Assert(results.Count == 0);

            results = parser.Evaluate("//text[@text]", root);

            Debug.Assert(results.Count == 1);
            Debug.Assert(results[0].name == "Text");

            results = parser.Evaluate("/button[@text]", root);

            Debug.Assert(results.Count == 0);

            results = parser.Evaluate("/button[@interactable]", root);

            Debug.Assert(results.Count == 1);
            Debug.Assert(results[0].name == "TestText");

            results = parser.Evaluate("button", root);

            Debug.Assert(results.Count == 3);

            results = parser.Evaluate("//button[@name=\"Second\"]", root);

            Debug.Assert(results.Count == 1);
            Debug.Assert(results[0].name == "Second");

            results = parser.Evaluate("//button[@interactable=\"False\"]", root);

            Debug.Assert(results.Count == 1);
            Debug.Assert(results[0].name == "Third");

            results = parser.Evaluate("//text[@text=\"some text overhere\"]", root);

            Debug.Assert(results.Count == 1);
            Debug.Assert(results[0].name == "Text");

            results = parser.Evaluate("/button//button", root);

            Debug.Assert(results.Count == 2);

            Debug.Log("time " + (Time.realtimeSinceStartup - startTime));

            Debug.Log("end evaluate test");
        }