Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自动打开google chrome,单击按钮,然后关闭chrome C#WinForms_C#_.net_Windows_Forms_Webpage - Fatal编程技术网

自动打开google chrome,单击按钮,然后关闭chrome C#WinForms

自动打开google chrome,单击按钮,然后关闭chrome C#WinForms,c#,.net,windows,forms,webpage,C#,.net,Windows,Forms,Webpage,我有一个任务,正如我在主题中写的那样。我需要打开谷歌浏览器的网页,然后我想点击按钮,关闭浏览器。我希望它是Windows窗体.net 4.0,并用C#编写。我曾尝试过这样做: System.Diagnostics.Process.Start(@“chrome.exe”,“网页”) 这很好,但我不知道如何强制应用程序点击页面上的按钮并关闭chrome 感谢您的帮助实现这一点的最佳方法是创建一个小的HTML文件,该文件将使用Javascript为您实现这一点。这样你就可以在chrome中打开这个文件

我有一个任务,正如我在主题中写的那样。我需要打开谷歌浏览器的网页,然后我想点击按钮,关闭浏览器。我希望它是Windows窗体.net 4.0,并用C#编写。我曾尝试过这样做:

System.Diagnostics.Process.Start(@“chrome.exe”,“网页”)

这很好,但我不知道如何强制应用程序点击页面上的按钮并关闭chrome


感谢您的帮助

实现这一点的最佳方法是创建一个小的HTML文件,该文件将使用Javascript为您实现这一点。这样你就可以在chrome中打开这个文件,它会帮你完成。如果您需要特定代码,请告诉我。几个月前我不得不这么做

    public static void TryWebBrowser()
    {
        bool _jsLoaded = false;
        string _directory = AppDomain.CurrentDomain.BaseDirectory;

        System.Diagnostics.ProcessStartInfo _sinfo = new    
        System.Diagnostics.ProcessStartInfo(_directory + "loginFile.html");
        System.Diagnostics.Process.Start(_sinfo);

        while (_jsLoaded == false) 
        {
            System.Diagnostics.Process[] _runningProcesses = 
            System.Diagnostics.Process.GetProcesses();
            foreach (System.Diagnostics.Process _p in _runningProcesses)
            {
                if (_p.MainWindowTitle.Contains("Jaspersoft"))
                {
                    _jsLoaded = true;
                    break;
                }
            }

        }

    }
有点像这样

<html>
  <head>
    <title>Launching Jaspersoft</title>
    <script src="other.js" language="javascript" type="text/javascript"></script>
    <script language="javascript" type="text/javascript">
        function submitForm() {
            document.getElementById("j_username").value = uid
            document.getElementById("j_password").value = pwd
            document.loginForm.action = action
            document.loginForm.submit()
        }


    </script>
  </head>
  <body onload="submitForm()">
    <form name="loginForm" method="post" action="">
      <input type="hidden" value="" name="j_username" id="j_username" />
      <input type="hidden" value="" name="j_password" id="j_password" />

    </form>

  </body>
</html>

推出Jaspersoft
函数submitForm(){
document.getElementById(“j_用户名”).value=uid
document.getElementById(“j_密码”).value=pwd
document.loginForm.action=操作
document.loginForm.submit()
}
other.js包含动态写入的uid和密码变量,没有其他变量。

使用:

using System.Diagnostics;
在按钮单击事件中写入:

Process[] AllProcess = Process.GetProcesses();
            foreach (var process in AllProcess)
            {
                if (process.MainWindowTitle != "")
                {
                    string s = process.ProcessName.ToLower();
                    if (s == "chrome" )
                        process.Kill();
                }
            }
改编自:
编辑:
上述代码负责关闭部分。但是,对于单击按钮
如果Chrome能够以一种简单的方式向外部应用程序公开按钮点击之类的方法,那将是令人惊讶的。

您可能需要编写自己的扩展名see:,否则必须通过win forms中的web浏览器控件打开网页并通过它捕获事件

我不知道您的全部要求,但我认为您可能希望了解一些自动化工具,如selenium

您可以在这里查看入门指南

它是用Java编写的,但他们也有.net api:


希望这能有所帮助。

我想你可以更轻松地完成这项工作,比如你想关闭浏览器,通过windows窗体上的按钮显示你的网页?我说的对吗?你不觉得用HttpClient发送Chrome会发送的请求更好吗?使用类似Fiddler的东西来获得确切的请求…Syed->如何关闭并不重要-可以像你说的那样,或者不管怎样,Dan->是的,如果你认为这样更好,请帮助我如何开始。例如,你有没有得到任何材料的教程或链接?@Roland-打开一个页面并点击一个按钮似乎不是什么主要的功能需求。没有人会看这个页面,谁在乎它是如何呈现的呢?话虽如此,如果您不能在其中使用简单的html表,那么您的html就有严重问题。内置的WebBrowser使用IE渲染引擎,所以IE可以做的任何事情,它都可以做。好了,现在我知道chrome的打开和关闭程度-但是我如何才能在页面上单击正确的按钮?我理解您需要做什么,但如果chrome以简单的方式将按钮单击等方法公开给外部应用程序,我会感到惊讶。您可能需要编写自己的扩展名see:或必须通过win forms中的web浏览器控件打开网页并通过它捕获事件。将浏览器窗口设为活动窗口。然后使用SendKeys.SendWait({ENTER}”);如果默认按钮是请求的按钮。或者添加一些“{TAB}”以访问请求的按钮