Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.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
C# 我想以编程方式启动带有URL的浏览器,等待它完成,然后关闭浏览器_C#_Html_Firefox_Internet Explorer 9_Chromium - Fatal编程技术网

C# 我想以编程方式启动带有URL的浏览器,等待它完成,然后关闭浏览器

C# 我想以编程方式启动带有URL的浏览器,等待它完成,然后关闭浏览器,c#,html,firefox,internet-explorer-9,chromium,C#,Html,Firefox,Internet Explorer 9,Chromium,我创建了一个HTML5页面,它提供了重要的服务器端功能。不幸的是,它必须在带有画布的HTML5浏览器(Chrome、IE9或Firefox)中运行,才能生成我需要的结果。它是完全自包含的,通过URL获取所需的参数,并准备在OnLoad事件准备发送时关闭。到目前为止还不错 以下过程需要自动化(无人眼或交互),并将在web服务中运行(而不是在浏览器中运行)。理想情况下,我不想在繁忙的等待中浪费额外的周期,也不想仅仅希望过程已经完成而等待很长时间来延迟结果。我需要: 使用C#打开带有URL的浏览器(最

我创建了一个HTML5页面,它提供了重要的服务器端功能。不幸的是,它必须在带有画布的HTML5浏览器(Chrome、IE9或Firefox)中运行,才能生成我需要的结果。它是完全自包含的,通过URL获取所需的参数,并准备在OnLoad事件准备发送时关闭。到目前为止还不错

以下过程需要自动化(无人眼或交互),并将在web服务中运行(而不是在浏览器中运行)。理想情况下,我不想在繁忙的等待中浪费额外的周期,也不想仅仅希望过程已经完成而等待很长时间来延迟结果。我需要:

  • 使用C#打开带有URL的浏览器(最好是Chrome)
  • 等待页面完全完成加载-理想情况下接收某种回调
  • 完成后关闭浏览器页面,再次使用C#
  • 我们已经尝试使用IE9。有C#支持启动IE9,等到不忙,然后优雅地关闭浏览器;但是,页面以异步方式加载资源(这是无法避免的),因此我们得到的信号是,在资源加载期间,而不是页面完成时,页面不再繁忙。添加忙等待将消耗宝贵的服务器端cpu周期

    一个简单的创建过程调用会很好,但只有在浏览器可以用一些html关闭自己时才起作用——但由于浏览器中的安全措施,我找不到可靠的方法来使用html命令关闭从命令行启动的浏览器(我确实看到你可以关闭从已经打开的页面生成的标签——仅限firefox,但这没有帮助)


    有人知道我如何实现这一目标吗?再说一遍,在任何过程中都没有人参与,没有人会看到页面或以任何方式与之交互。页面只在服务器上运行,永远不会部署到客户机上。

    自动化浏览器-这就是为什么。我认为这将是一个好主意适合该任务,并且有很好的C#支持。它甚至可以使用Selenium RC服务器在远程机器上运行浏览器。

    自动化浏览器就是这样。我认为它非常适合该任务,并且有很好的C#支持。它甚至可以使用Selenium RC服务器在远程机器上运行浏览器。

    我建议不要这样做o使用WebBrowser控件加载HTML。一旦获得数据,使用ObjectForScript调用c#方法在完成时通知

    您甚至不必显示webbrowser控件


    如果您有任何问题,请告诉我。希望能有所帮助!

    我建议使用WebBrowser控件加载HTML。一旦您返回数据,请使用ObjectForScript调用c#方法,在完成时通知

    您甚至不必显示webbrowser控件


    如果你有任何问题,请告诉我。希望有帮助。

    你应该考虑使用<代码> WebBubue/Cux>控件,它基本上与你的系统上安装的IE版本相同,但是可以编程控制。如果你可以从桌面应用程序中使用它,就可以使用它,而不是在服务中运行代码时使用它。。我会这样做,但我不确定html5,但我想它会起作用,这是一个很好的起点。你可能可以在IE中使用,但仍然可以使用应用程序中的IE组件。是的,WebBrowser就是我所说的wait to not busy呼叫。wait Toll not busy busy返回到真的很早。如果你知道其他什么为了尝试这一点,我很感兴趣。不过,我不需要与页面交互,只需打开页面,等待它完成,然后关闭它。我没有应用程序,没有按钮,没有文本字段,没有用户交互。没有框架。整个东西都是从web服务中启动的,而不是从页面,也不是从浏览器启动的。整个页面必须是完整的从c*开始,运行到完成,然后关闭C,让C知道它什么时候完成。你应该考虑使用<代码> WebBubue/Cux>控件,它基本上与你的系统上安装的IE版本相同,但是可以编程控制。如果你可以从桌面应用程序中使用它,就不要使用它。在服务中取消运行。我可以这样做,但不确定html5,但我想它会起作用,这是一个很好的开始。你可能可以在IE中使用,但仍然可以使用应用程序中的IE组件。是的,WebBrowser就是我所说的wait-unt-busy呼叫。wait-unt-busy返回到早期。如果你知道还有什么可以尝试的话,我很感兴趣。不过,我也不需要与页面交互,只需打开页面,等待页面完成,然后关闭它。我没有应用程序,没有按钮,没有文本字段,没有用户交互,没有框架。整个东西都是从web服务中启动的,不是从页面,也不是从浏览器启动的整个页面必须从c#启动,运行到完成,然后关闭-并让c#知道它何时完成。我不希望在启动页面后与它进行交互。简单地启动页面,等待它完成,然后关闭它,Selenium似乎有严重的杀伤力。Selenium是一个测试工具(单击按钮,填写文本字段等)。我也只是研究了一下Selenium。我不想启动一个测试环境,这样就需要人工交互。我没有运行测试。这是web服务的一部分。该服务必须创建浏览器,启动页面,等待完成,然后关闭页面-所有这些都不需要人工交互。Selenium不需要hum一种交互,它被设计成脚本化的——你可以通过C#使用WebDriver API来实现。Selenium不仅仅用于测试,它还用于各种浏览器自动化。我不希望