Отправка данных на веб-сайт с помощью Microsoft Edge (переключение из Inte rnet Explorer) - PullRequest
1 голос
/ 10 февраля 2020

У меня есть это существующее Windows приложение формы, написанное в C#, которое обрабатывает данные и отправляет обработанные данные на веб-сайт.

В inte rnet explorer работает нормально, но я хочу его также для работы на Microsoft Edge. Можно ли использовать Edge?

Вот мой код.

   private void SendDataToSPC(SHDocVw.InternetExplorer ie, string strSPCData)
        {           
            mshtml.IHTMLDocument3 doc = ie.Document as mshtml.IHTMLDocument3;
            mshtml.IHTMLElementCollection txtBoxes = doc.getElementsByTagName("INPUT");
            string[] data = Regex.Split(strSPCData, "\r\n");
            int intCtr = 0;
            foreach (mshtml.IHTMLElement txtBox in txtBoxes)
            {
                if (txtBox.getAttribute("className") != null)
                {
                    if (txtBox.getAttribute("className").Equals("vcs_de_textbox") && intCtr < data.Length)
                    {
                        txtBox.setAttribute("value", data[intCtr]);
                        intCtr++;
                    }
                }
            }

            foreach (mshtml.IHTMLElement button in txtBoxes)
            {
                if (button.getAttribute("className") != null)
                {
                    if (button.getAttribute("className").Equals("vcs_de_saveButton")){
                        button.click();
                    }
                }
            }

            ((mshtml.HTMLDocument)doc).focus();
        }

Обновление

Я в настоящее время использую Selenium и пытаюсь использовать драйвер Edge он возвращает мне ошибку

Дополнительная информация: возникла исключительная ситуация с нулевым ответом при отправке HTTP-запроса на удаленный сервер WebDriver для URL http://localhost: 58191 / session, Состояние исключения было ReceiveFailure, и сообщение было: Основное соединение было закрыто: При получении произошла непредвиденная ошибка.

Но когда я пытаюсь использовать firefoxDriver, он работает, но мне нужно использовать существующий Firefox открытый сеанс браузера (существующий open Firefox).

Selinium webdriver 3.141.0 
Microsoft Edge 41.16299.1480.0 - browser 
Selenium.webdriver.microsoftdrivere 17.17134.0
OS Windows 10

Вот мой последний код

  private void SendDataToSPC2(string strSPCData)
        {
            //Create the reference for our browser
            //System.setProperty("webdriver.edge.driver");
            //IWebDriver driver = new FirefoxDriver();

            //Navigate to google page
            //driver.Navigate().GoToUrl("http:www.google.com");

            //Find the Search text box UI Element
            //IWebElement element = driver.FindElement(By.Id("p1d1"));

            //Perform Ops
            //element.SendKeys("executeautomation");

            //Close the browser
           // driver.Close();
            IWebDriver edgeDriver = new EdgeDriver();
            edgeDriver.Navigate().GoToUrl("http://phgcubadm1ms023/spc/jsp/dataentry/vcsdataentry/vcsDataEntryMain.action");
            var txtBoxes = edgeDriver.FindElements(By.TagName("INPUT"));
            string[] data = Regex.Split(strSPCData, "\r\n");
            int intCtr = 0;
            foreach (IWebElement txtbox in txtBoxes)
            {
                if (txtbox.GetAttribute("className") != null)
                {
                    if (txtbox.GetAttribute("className").Equals("vcs_de_textbox") && intCtr < data.Length)
                    {
                        txtbox.SendKeys(data[intCtr]);
                        intCtr++;
                    }
                }
            }

            foreach (IWebElement button in txtBoxes)
            {
                if (button.GetAttribute("className") != null)
                {
                    if (button.GetAttribute("className").Equals("vcs_de_saveButton"))
                    {
                        button.Click();
                    }
                }
            }
        }

1 Ответ

1 голос
/ 11 февраля 2020

Я проверил ваш код и похоже, что вы пытаетесь автоматизировать браузер IE в своем коде.

Вы не можете запустить этот же код для браузера Edge.

Я предлагаю вам попробовать Веб-драйвер Microsoft для автоматизации браузера MS Edge с использованием c# кода.

Вот пример кода:

using OpenQA.Selenium;
using OpenQA.Selenium.Edge;
using System;

namespace EdgeDriverTests
{
    public class Program
    {
        /*
        * This assumes you have added MicrosoftWebDriver.exe to your System Path.
        * For help on adding an exe to your System Path, please see:
        * https://msdn.microsoft.com/en-us/library/office/ee537574(v=office.14).aspx
        */
        static void Main(string[] args)
        {
            /* You can find the latest version of Microsoft WebDriver here:
            * https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
            */
            var driver = new EdgeDriver();

            // Navigate to Bing
            driver.Url = "https://www.bing.com/";

            // Find the search box and query for webdriver
            var element = driver.FindElementById("sb_form_q");

            element.SendKeys("webdriver");
            element.SendKeys(Keys.Enter);

            Console.ReadLine();
            driver.Quit();
        }
    }
}

Ссылки:

  1. Загрузить веб-драйвер

  2. Автоматическое тестирование в Microsoft Edge через WebDriver

  3. WebDriver (Edge HTML)

  4. WebDriver (Chromium)

...