【发布时间】:2023-01-10 16:22:23
【问题描述】:
我已经使用 WebView2 控件编写了一些 VB.Net 代码来尝试从特定杂志下载 PDF 文件。
我的VB.Net代码如下
Imports Microsoft.Web.WebView2.Core
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Call InitializeAsync()
End Sub
Async Sub InitializeAsync()
Await wv.EnsureCoreWebView2Async()
wv.CoreWebView2.Navigate("https://journal.cinetelerevue.sudinfo.be")
End Sub
Private Sub wv_NavigationCompleted(sender As Object, e As CoreWebView2NavigationCompletedEventArgs) Handles wv.NavigationCompleted
Threading.Thread.Sleep(1000)
Call ClickOnPdfButton()
Threading.Thread.Sleep(1000)
End Sub
Async Sub ClickOnPdfButton()
Dim sButtonCmd = "document.getElementById('readPdfBtn').click();"
Dim task = Await wv.ExecuteScriptAsync(sButtonCmd)
End Sub
End Class
第一个 Navigate() 方法显示正确请求的 URL。
Javascript document.getElementById('readPdfBtn').click(); 方法也可以正常工作。它打开一个新的窗口,因为链接到 click() 方法的 Javascript 代码执行以下操作
var e = window.open("","pdf_view");
程序运行后,我得到以下结果
我在第一个窗口中围绕PDF 按钮画了一个红色圆圈。
我的问题是我需要继续单击新窗口中包含的另一个PDF 按钮以启动 PDF 下载。
如何使用wvWebView2 变量访问它?
在任务管理器中,我可以看到新的 Windows 附加到 Extract-PDF-From-Web 应用程序,这是我的 VB.Net 应用程序的名称。
【问题讨论】:
-
这个答案会有所帮助,但我等待 VB.Net 的答案而不是 C# 的答案,其中事件是用另一种技术定义的。
-
您订阅事件的方式无关紧要。您可以使用所用语言的语法来执行操作。无论语言如何,事件都是相同的。重要的是你测试这个方法(所有语言都一样),看看它是否适合你。网站有非常不同的方式来生成弹出窗口。如果提供的工具按原样工作,那就太好了,否则您需要尝试其他方法。由于此站点似乎需要订阅,因此您可能是唯一可以测试这些方法的人