有没有办法在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;
}
}
}
}
编辑:这是一张图片: 在图像中,我似乎可以发现它的高度。有没有办法以编程方式获得高度? 我想在scrollviewer中实现它。我已经禁用了浏览器滚动条,所以我可以使用我的。我需要设置scrollviewers高度以适合表单...
答案 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();
}
以下是获取高度的工作按钮的屏幕截图:
修改强>
请注意,这是一项测试,您必须对正在评估的 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/"));
}
我的工作屏幕截图:
答案 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);
};