得到div类的高度

时间:2017-03-02 22:01:32

标签: c# css uwp html-agility-pack

有没有办法在class上获得C#的身高? 我正在使用HTMLAgilitPack来获取节点。这是我的代码。

private async void GetCldInfos()
    {
        string sURL = @"https://m.investing.com/economic-calendar/";
        using (HttpClient clientduplicate = new HttpClient())
        {
            clientduplicate.DefaultRequestHeaders.Add("User-Agent",
                "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident / 6.0)");

            using (HttpResponseMessage responseduplicate = await clientduplicate.GetAsync(sURL))
            using (HttpContent contentduplicate = responseduplicate.Content)
            {
                try
                {
                    string resultduplicate = await contentduplicate.ReadAsStringAsync();

                    var websiteduplicate = new HtmlDocument();
                    websiteduplicate.LoadHtml(resultduplicate);
                    var News = websiteduplicate.DocumentNode.Descendants("div").Where(o => o.GetAttributeValue("class", "") == "js-economic-calendar").Single();
                    //get height here
                }
                catch (Exception ex1)
                {
                    throw ex1.InnerException;
                }
            }
        }
    }

编辑:这是一张图片:here 在图像中,我似乎可以发现它的高度。有没有办法以编程方式获得高度? 我想在scrollviewer中实现它。我已经禁用了浏览器滚动条,所以我可以使用我的。我需要设置scrollviewers高度以适合表单...

2 个答案:

答案 0 :(得分:4)

这是使用无头浏览器Watin使用内联javascript获取DOM元素高度的解决方案。

首先使用 Visual Studio Nuget Package Manager控制台安装 Watin ,然后执行:

PM> Install-Package WatiN

成功安装Watin无头浏览器后,您可以像这样使用它导航到一个页面并运行一个简单的javascript来检索元素的高度:

using WatiN.Core;
...

private void buttonGetElementHeight_Click(object sender, EventArgs e)
{
    WatiN.Core.Settings.Instance.MakeNewIeInstanceVisible = false;
    IE browser = new IE();

    browser.GoToNoWait("https://m.investing.com/economic-calendar/");
    browser.WaitUntilContainsText("Filters");

    var height = browser.Eval("document.getElementsByClassName('js-economic-calendar')[0].offsetHeight");
    labelResult.Text = String.Format("Element height is {0}px", height);

    browser.ForceClose();
}

以下是获取高度的工作按钮的屏幕截图:

Screen capture

修改

请注意,这是一项测试,您必须对正在评估的 C#Watin对象内联javascript 实施一些错误处理。

<强>更新

以下是使用Windows.UI.Xaml.Controls.WebView

的方法
private async void webView1_LoadCompleted(object sender, NavigationEventArgs e)
{
    var offsetHeight = await webView1.InvokeScriptAsync("eval", new string[] {
        "document.getElementsByClassName('js-economic-calendar')[0].offsetHeight.toString()"
    });
    textBox.Text = offsetHeight;
}

private async void button_Click(object sender, RoutedEventArgs e)
{
    webView1.LoadCompleted += webView1_LoadCompleted;
    webView1.Navigate(new Uri("https://m.investing.com/economic-calendar/"));
}

我的工作屏幕截图:

WebView Screen Capture

答案 1 :(得分:1)

我不这么认为,因为高度是由浏览器计算的。

你必须首先预先处理这种类型的HTML然后再计算它。

更新: 如果你愿意使用JavaScript获得高度,那么它很容易。

获取包含您想要使用slimscroll的视图的div

function getsize() {
            var el = $('#divIdYouWantSize'),
//current eight of your div
               curHeight = el.height(),
//set div height using CSS style
               autoHeight = el.css('height', $(window).height() ).height();
//try animating the resize so it looks pretty
                el.height(curHeight).animate({ height: autoHeight }, 100);
};