我是web浏览器自动化方面的新手,我选择Google pages作为要学习的示例。
我尝试模拟上传到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?
}
}发布于 2013-03-18 14:49:40
您可以尝试使用某种web UI测试框架,如Selenium。它可以帮助您记录测试用例,甚至可以生成要粘贴到测试项目中的C#代码。
发布于 2013-03-19 08:24:10
这可能是故意难以自动化的-我知道GMail (雅虎和其他网络邮件提供商)故意让通过他们的web界面自动发送电子邮件变得复杂。
因此,上传文档到Google Drive可能是相似的;很可能是为了防止滥用,Google设置了路障,使自动上传变得困难。
发布于 2018-02-21 17:26:40
你可以使用硒和锡库利的混合物。Selenium确实是浏览器自动化的一个很好的工具。但是,如果您必须使用不能由Selenium自动执行的UI元素,我建议您使用C#的Sikuli。Here我找到了一个例子,它是如何看起来的:
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模拟键盘输入。
https://stackoverflow.com/questions/15471012
复制相似问题