div 클래스 높이 가져 오기

c# css html-agility-pack uwp

문제

C# 에서 class 의 높이를 얻는 방법이 있습니까? 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;
                }
            }
        }
    }

편집 : 여기 이미지가 있습니다 : 이리 이미지에서 나는 그것이 높이 인 것처럼 보일 수 있습니다. 프로그래밍 방식으로 그 높이를 얻을 수있는 방법이 있습니까? scrollviewer에서 구현하고 싶습니다. 브라우저 스크롤바를 사용하지 않도록 설정 했으므로 사용할 수 있습니다. 그리고 폼에 맞게 scrollviewers 높이를 설정해야합니다 ...

수락 된 답변

이것은 headless 브라우저 Watin을 사용하여 인라인 자바 스크립트를 사용하여 DOM 요소의 높이를 얻는 솔루션입니다.

먼저 Visual Studio Nuget 패키지 관리자 콘솔 을 사용하여 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();
}

다음은 높이를 가져 오는 작업 버튼의 화면 캡처입니다.

화면 캡처

편집하다

이것은 테스트이므로 C # Watin 객체 와 평가중인 인라인 자바 스크립트에 대한 오류 처리를 구현해야합니다.

최신 정보

Windows.UI.Xaml.Controls.WebView 사용 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 화면 캡처


인기 답변

높이가 브라우저에 의해 계산되므로 그렇게 생각하지 않습니다.

먼저 HTML 형식을 미리 렌더링 한 다음 계산해야합니다.


업데이트 : 자바 스크립트를 사용하여 키를 얻으 려한다면, 간단합니다.

귀하의 슬림 스크롤을 사용하고자하는보기를 감싸고있는 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);
};


Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow