gpt4 book ai didi

c# - 交互 Win Form 和 Web 浏览器,建议?维尼姆?华庭?白色的?西库里?

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:38 25 4
gpt4 key购买 nike

<分区>

我想创建一个 .NET 应用程序来帮助我管理和自动化 Web 浏览器。我进行了快速搜索,找到了一些解决方案。

似乎Selenium是主要的引用软件(开源),但它不允许Windows Form和浏览器交互。

如果我理解正确,基于 Selenium 的源代码,已经构建了允许这样做的其他软件。特别是我读过 Winium、Watin、White 和 Sikuli。

在这个页面我找到了其中一些的简短比较

https://blog.testproject.io/2016/12/22/open-source-test-automation-tools-for-desktop-applications/

我想要一些关于使用哪一个的建议。

我是 VB.NET 的业余程序员,但我从 C# 翻译没有问题。

我想使用 Chrome,但关于 Watin,我读到它不支持 Chrome,它支持其他浏览器的旧版本(Internet Explorer 9 和 Firefox 2.x)。您知道这是否真的会在加载页面时造成问题吗?

我还需要一个可以处理加载页面延迟的软件。

例如,对于 .NET WebBrowser 类,我使用指令:

Do Until wb.ReadyState = WebBrowserReadyState.Complete

或者以前我在这种模式下将 WebBrowser 类与 HtmlAgilityPack 混合:

Do
Application.DoEvents()
' we create a delay, that allow the page to be loaded correctly:
' Thread.Sleep(...) Don't allow the page load correctly
Dim delay as Date = Date.Now.AddMilliseconds(1000)
Do While delay > Date.Now
Loop
documentAsIHtmlDocument3 = DirectCast(wb.Document.DomDocument, mshtml.IHTMLDocument3)
sr = New StringReader(documentAsIHtmlDocument3.documentElement.outerHTML)
docPreview.Load(sr)
nodeTmp1 = docPreview.DocumentNode.SelectSingleNode("//div[@id='content']")
nodeModule = nodeTmp1.SelectNodes("descendant:: div[@class='module']")
Loop Until IsNothing(nodeModule) = False

但出于很多原因我不喜欢这种类型的解决方案,并且阅读代码,我想你可以想象为什么。

你有什么建议吗?

10/01/2018 更新:我发现了一个类似的话题:

View Generated Source (After AJAX/JavaScript) in C#

用户确认使用 Selenium 和 Watin 感觉良好。他们提出了一个关于性能缓慢的问题。其他建议?

________ 回复 Rescis ________

这是我用Watin做的一段代码

Imports WatiN.Core
...
Private browser As New IE
...
browser.GoTo("https://www.the_site_with-wich_i_have_my_account/")
...
Private Sub joinAccount()
'Usually a website it's built with an HTML 'container' that contains Username and Password textBox and a Join button:
'With chrome right click on that element, and 'inspect element' we can analize the HTML code and we can find the name of the class of the container
Dim formLogin As WatiN.Core.Form = browser.Form(Find.ByClass("class_found_from_chrome_inspect_element"))
'search for Username textBox
Dim tbUsername As WatiN.Core.TextField = formLogin.TextField(Find.ById("Username_textField_found_from_chrome_inspect_element"))
'set our username
tbUsername.SetAttributeValue("value", "my_username")
'search for Password textBox
Dim tbPassword As WatiN.Core.TextField = formLogin.TextField(Find.ById("Password_textField_found_from_chrome_inspect_element"))
'set the password
tbPassword.SetAttributeValue("value", "my_password")
'search the Join button and perform click
formLogin.Button(Find.ById("Join_button_found_from_chrome_inspect_element")).Click()
End Sub

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com