c#截屏项目-网络浏览器不更改url



我现在正在做一个小的自动化项目,遇到了困难。首先,我想说明的是,我在该项目的这个组件中使用网络浏览器的唯一原因是,被抓取的网站有模糊的代码,需要一个启用java的浏览器来显示代码,我有另一个使用网络客户端的应用程序,它对其他测试网站很好,但不幸的是,它不能在这个目标上使用

我的问题出现在尝试用程序配置网络浏览器控件时

我发现的第一个问题是,如果我在控件属性中手动设置url,它会加载第1页,并且scraper适用于该页
然而,我继续清除属性中的url,并在Form1_Load方法中手动设置它,但它返回了大约:空白,因为url,尽管我已经验证了被拉入的自动参数是好的,应该在没有问题的情况下设置

以下是我使用的:

注意:
集合引用定义的XML序列化数组
定义是指该目标的活动定义,其思想是为多个目标配置该定义

    private void Form1_Load(object sender, EventArgs e)
    {
        PopulateScraperCollection();
        webBrowser1.Url = new Uri(collection.ElementAt(b).AccessUrl);
        NavigateToUrl(collection.ElementAt(b).AccessUrl);
    }
    public void PopulateScraperCollection()
    {
        string[] xmlFiles = Directory.GetFiles(@"E:DealerConfigs");
        foreach (string xmlFile in xmlFiles)
        {
            collection.Add(ScraperDefinition.Deserialize(xmlFile));
        }
    }
    public void NavigateToUrl(string url)
    {
        Console.WriteLine(collection.ElementAt(b).AccessUrl);
        webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
        webBrowser1.Navigate(webBrowser1.Url);
    }
    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        WebBrowser wb = sender as WebBrowser;
        Process(collection.ElementAt(b), 0);
        b++;
    }

因此,这会导致使用DocumentCompleted导航到分页结果时出现另一个问题。在第一个页面加载时,我使用DocumentCompleted事件来触发链接提取
当我尝试为下一个页面设置url时,它正在使用xpath进行筛选并再次验证,在调试中使用F10进行切换表明它没有更改,DocumentCompleted事件也没有触发

我更改url等的代码是:

string nextPageUrl = string.Format(definition.NextPageUrlFormat, WebUtility.HtmlDecode(relativeUrl));
webBrowser1.Url = new Uri(nextPageUrl);
webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
webBrowser1.Navigate(webBrowser1.Url);

我们一如既往地感谢您的帮助,事实证明,这是一场自动化的噩梦,不仅因为WebBrowser比WebClient慢得多,而且事实证明,在飞行中更改是一种痛苦

问候

Barry

你永远不应该真正设置webBrowser1.Url,你应该只使用Navigate void,所以

private void Form1_Load(object sender, EventArgs e)
{
    PopulateScraperCollection();
    NavigateToUrl(collection.ElementAt(b).AccessUrl);
}

我的猜测是,它为什么没有导航,是因为收藏。ElementAt(b)。AccessUrl为null或关于:空白

我真的不确定如何回答你的问题,但导航无效应该将其更改为

注意:WebBrowser控件是垃圾,你可以尝试另一个WebBrowser控件,如Awesomium或GeckoFX

最新更新