使用.NET的Web自动化

DEN*_*DEN 9 .net c#

我是一个非常新手的程序员.你们中的任何人都知道如何进行网络自动化C#吗?基本上,我只想在网上自动实现一些简单的操作.打开网络链接后,我只想自动执行以下操作.

  1. 自动输入一些值并单击"运行"按钮.
  2. 选中ComboBox并单击"下载"按钮.

我怎么能这样做C#?我的朋友介绍我使用Powershell,但我想.Net也提供这种类型的库.有关我的任何建议或链接吗?

Fun*_*eng 15

您可以使用该System.Windows.Forms.WebBrowser控件(MSDN文档).对于测试,它允许您执行可在浏览器中完成的操作.它无需任何额外的工作即可轻松执行JavaScript.如果出现问题,您将能够直观地看到该网站所处的状态.

例:

private void buttonStart_Click(object sender, EventArgs e)
{
    webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
    webBrowser1.Navigate("http://www.wikipedia.org/");            
}

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    HtmlElement search = webBrowser1.Document.GetElementById("searchInput");
    if(search != null)
    {
        search.SetAttribute("value", "Superman");
        foreach(HtmlElement ele in search.Parent.Children)
        {
            if (ele.TagName.ToLower() == "input" && ele.Name.ToLower() == "go")
            {
                ele.InvokeMember("click");
                break;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

要回答您的问题:如何选中复选框

对于HTML:

<input type="checkbox" id="testCheck"></input>
Run Code Online (Sandbox Code Playgroud)

代码:

search = webBrowser1.Document.GetElementById("testCheck");
if (search != null)
    search.SetAttribute("checked", "true");
Run Code Online (Sandbox Code Playgroud)

实际上,具体的"如何"很大程度上取决于实际的HTML.


为了处理您的多线程问题:

private delegate void StartTestHandler(string url);
private void StartTest(string url)
{
    if (InvokeRequired)
        Invoke(new StartTestHandler(StartTest), url);
    else
    {
        webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
        webBrowser1.Navigate(url);
    }
}
Run Code Online (Sandbox Code Playgroud)

InvokeRequired,检查当前线程是否是UI线程(实际上,是创建表单的线程).如果不是,那么它将尝试在所需的线程中运行StartTest.


Dmy*_*iak 6

如果你想模拟一个真正的浏览器,那么WatiN将非常适合你.(Selenium是另一种选择,但我不建议你这样做).

如果要在HTTP级别上工作,请使用WebRequest和相关类.

  • WatiN-&gt;死链接 (3认同)

Nat*_*ley 5

请查看SimpleBrowser,它是一个相当成熟的轻量级浏览器自动化库。

https://github.com/axefrog/SimpleBrowser

从页面:

SimpleBrowser是轻量级但功能强大的浏览器自动化引擎,专为自动化和测试方案而设计。它提供了直观的API,使您可以轻松使用各种匹配技术快速提取页面的特定元素,然后使用Click(),SubmitForm()等方法与这些元素进行交互。SimpleBrowser不支持JavaScript,但允许在提交或导航之前手动操作用户代理,引荐来源网址,请求标头,表单值和其他值。