Как нарисовать многоугольник на карте Esri с помощью Selenium, Webdriver, C#

У меня есть еще одна проблема с веб-драйвером Selenium, я пишу тест, где мне нужно нарисовать многоугольник на карте (карта основана на Esri API). Мне удалось увеличить масштаб, но я не смог найти примеров, как нарисовать многоугольник на карте или как поставить вершину многоугольника, используя координаты x, y с карты.

Вот моя часть кода, я не могу показать URL, он частный:

namespace MK_edit

    {
        class Program
        {
            static void Main(string[] args)
            {
                IWebDriver driver = new ChromeDriver(@"C:\Users\ProjectLibre");
                driver.Url = "----";
                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(60); 
                driver.Manage().Window.Maximize();

//close popup               
                driver.FindElement(By.CssSelector("div.whatsnew-content"));
                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
                driver.FindElement(By.CssSelector("button.btn.btn-success")).Click(); 
                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(60);

 //open element for editing              
                var lab = driver.FindElement(By.CssSelector("a[title=\"-\"]"));
                var icon = driver.FindElement(By.CssSelector("span.glyphicon.glyphicon-edit"));
                var loadingBackgrop = driver.FindElement(By.ClassName("overlay")); 

                IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
                js.ExecuteScript("arguments[0].style='display: none;'", icon); 

                var wait= new WebDriverWait(driver, new TimeSpan(0, 0, 60));
                WaitForNotVisible(loadingBackgrop, driver);
                wait.Until(ExpectedConditions.ElementToBeClickable(lab)); 
                lab.Click();
//choose layer form the list    
                var layer_list = driver.FindElement(By.CssSelector("#edit-layerlist-holder .combobox-wrapper .selectize-input.items"));
                WaitForNotVisible(loadingBackgrop, driver);
                wait.Until(ExpectedConditions.ElementToBeClickable(layer_list));
                layer_list.Click();

                var forest = driver.FindElement(By.CssSelector("body > div:nth-child(12) > div > div:nth-child(15) > div:nth-child(21)"));
                forest.Click();
//zoom in map x,y    
                var map = driver.FindElement(By.CssSelector("#map_gc"));
                map.Click();
                js.ExecuteScript("ng.geometryTools.zoomToXY(***177, ***289)"); 
                var edit = driver.FindElement(By.CssSelector("#edit-drawbtn"));
                edit.Click(); }

Chrome версии 67.0.3396.99, 64-разрядная версия Visual C# 2017 Webdriver версии 3.13.1.0

Надеюсь, у вас есть идеи! Tnx.


person Aad Ali    schedule 13.08.2018    source источник


Ответы (1)


Я нашел решение, возможно, оно тоже кому-то понадобится. В моей задаче мне удалось нарисовать многоугольник с помощью действий:

// polygon vertex
            Actions vertex1 = new Actions(driver);
            vertex1.MoveToElement(map).MoveByOffset(100, 100).Click();
            IAction clickNextPoint = vertex1.Build();
            clickNextPoint.Perform();

            Actions vertex2 = new Actions(driver);
            vertex2.MoveToElement(map).MoveByOffset(10,100).Click();
            IAction clickNextPoint2 = vertex2.Build();
            clickNextPoint2.Perform();

            Actions vertex3 = new Actions(driver);
            vertex3.MoveToElement(map).MoveByOffset(10, 10).Click();
            IAction clickNextPoint3 = vertex3.Build();
            clickNextPoint3.Perform();

            Actions vertex4 = new Actions(driver);
            vertex4.MoveToElement(karte).MoveByOffset(100, 10).DoubleClick();
            System.Threading.Thread.Sleep(3000);
person Aad Ali    schedule 13.08.2018