我需要滚动到DIV才能打印整个页面。
我已经在DIV元素上尝试过SendKeys,但是它滚动了整个页面。 我不希望有一种解决方案可以滚动到已定义的对象,因为我有许多不同的屏幕,这些屏幕的属性带有不同的元素。
DIV为:
<div class="content modal-overflow">
它的CSS类:
.modal-overflow
{
max-height:430px;
overflow:auto
}
430px是DIV的可见部分。整个DIV具有750像素。
代码:
<div class="modal fade" id="modalDetalhes" tabindex="-1" role="dialog">
<div class="modal-dialog width750">
<div class="modal-content">
<div class="modal-header">
</span></button>
</div>
<div class="modal-body">
(...)
<div class="content modal-overflow">
<div class="row">
<div class="col-md-3">
<div class="form-group">
(...)
今天,我使用一个功能来获取整个屏幕截图。 我使用了以下解决方案: Selenium WebDriver C# Full Website Screenshots With ChromeDriver and FirefoxDriver
我该如何滚动打印整个DIV?
答案 0 :(得分:0)
这是获取特定元素的屏幕截图的方法。
public static void TakeElementScreenshot(IWebDriver driver, IWebElement element)
{
try
{
string screenshotName = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + "element_screenshot.jpg";
Byte[] byteArray = ((ITakesScreenshot)driver).GetScreenshot().AsByteArray;
System.Drawing.Bitmap screenshot = new System.Drawing.Bitmap(new System.IO.MemoryStream(byteArray));
System.Drawing.Rectangle eleImage = new System.Drawing.Rectangle(element.Location.X, element.Location.Y, element.Size.Width, element.Size.Height);
screenshot = screenshot.Clone(eleImage, screenshot.PixelFormat);
screenshot.Save(String.Format(@"here goes the folder path" + screenshotName, System.Drawing.Imaging.ImageFormat.Jpeg));
}
catch (Exception e)
{
logger.Error(e.StackTrace + ':' + e.Message);
}
}
如果必须滚动到该元素,请使用以下内容。
var elem = driver.FindElement(By.ClassName("content modal-overflow"));
driver.ExecuteScript("arguments[0].scrollIntoView(true);", elem);
不确定您的意思是“我不希望解决方案滚动到定义的对象,因为我有许多不同的屏幕,但这些屏幕具有不同的元素。”您是否希望在模态窗口中查看内容?