编程语言
首页 > 编程语言> > c#WebBrowser-如何等待javascript完成文档加载完成后运行?

c#WebBrowser-如何等待javascript完成文档加载完成后运行?

作者:互联网

我正在一个项目中,该项目涉及从供应商的网站上抓取一些产品数据(得到他们的祝福,但没有得到他们的帮助).我在C#商店中工作,所以我在使用.NET Windows窗体WebBrowser控件.

我正在响应文档完成事件,但是我发现我必须线程休眠一小会儿,否则数据将无法显示在DOM中的预期位置.

在查看页面上的JavaScript时,我可以看到它在页面完成加载后正在动态更改现有DOM内容(设置someDomElement.innerHTML).它没有进行任何ajax调用,而是使用原始页面加载中已经拥有的数据. (我可以尝试解析这些数据,但是它嵌入在javascript中,并且有点模糊.)因此,显然,我在某种程度上使文档完成事件在javascript完成运行之前.

最终可能会刮出很多页面,因此请等待半秒或其他远远不理想的时间.我只想等到在检查页面之前,所有开始于文档就绪/页面加载的JavaScript均已运行完毕.有人知道这样做的方法吗?

我想文档完成事件在那之前不应该触发,对吧?但这肯定是.页面javascript可能正在使用setTimeout.有没有办法判断是否有超时等待处理?

谢谢你的帮助!

解决方法:

你可以

>假设数据的解析永不改变,请查看Javascript如何处理数据,并在终端执行相同的操作以立即在页面加载时立即检索数据
>将javascript插入网页并检测DOM修改,以了解何时从C#中获取数据
>使用PhantomJS编写纯JavaScript解决方案

标签:webbrowser-control,javascript,c,net
来源: https://codeday.me/bug/20191122/2058978.html