2

我是网络浏览器自动化的新手,我选择谷歌页面作为学习示例。

我尝试模拟文件上传到 Google Drive,但遇到了几个问题。

http://s4.postimage.org/jbx6c3q3h/Untitled_1.jpg

private void webBrowser_DocumentCompleted ( object sender, WebBrowserDocumentCompletedEventArgs e ) {
    HtmlElement element = webBrowser.Document.GetElementById( "contentcreationpane" );
    if ( element != null )
        UploadFile();
}


private void UploadFile () {
    HtmlElementCollection elements = webBrowser.Document.GetElementsByTagName( "div" );
    foreach ( HtmlElement element in elements ) {
        if ( element.GetAttribute( "data-tooltip" ) == "Upload" ) {
            element.InvokeMember( "click" );
            break;
        }
    }

    HtmlElement uploadButton = webBrowser.Document.GetElementById( ":1" );
    if ( uploadButton != null ) {
        uploadButton.InvokeMember( "click" );
    } else {
        Exception goes here! Is it necessary to do a wait after previous element "Upload" is clicked?
    }
}
4

3 回答 3

1

您可以尝试使用某种 Web UI 测试框架,例如 Selenium。它可以帮助您记录测试用例,甚至可以生成 C# 代码以粘贴到您的测试项目中。

于 2013-03-18T06:49:39.607 回答
1

这可能很难自动化——我知道 GMail(以及雅虎和其他网络邮件提供商)故意让通过他们的网络界面自动发送电子邮件变得复杂。

所以上传文件到 Google Drive 可能是类似的;很可能为了防止滥用,谷歌设置了障碍,使自动上传变得困难。

于 2013-03-19T00:24:10.233 回答
1

您可以使用硒和 Sikuli 的混合物。Selenium 确实是浏览器自动化的绝佳工具。但是,如果您必须使用 Selenium 无法自动化的 UI 元素,我建议您使用 Sikuli for C#。在这里,我找到了一个示例:

    Launch.Start();  
    IwebDriver driver = new ChromeDriver("D:/>SeleniumDrivers/ChromeDriver32");  
    driver.Manage().Window.Maximize();  
    driver.Navigate.GoToURL("http://www.csharpcorner.com/");  
    Screen scr = new Screen();  
    scr.Click(Image1, true);  
    scr.wait(10);  
    scr.Type(Image2, "string to Enter", KeyModifier.None);  
    scr.wait(10);  
    scr.Type(Image3, "string to enter", keyModifier.None);  
    scr.wait(10);  
    scr.Type(Image4, "string to enter", KeyModifier.None);  
    scr.wait(10);  
    scr.Type(Image5, "string to enter", KeyModifier.None);  
    scr.wait(10);  
    driver.quit();  

您可以轻松地与 UI 元素交互并使用 Sikuli 模拟键盘输入。

于 2018-02-21T09:26:40.290 回答