Selenium Webdriver - выделите DIV для печати всего DIV - PullRequest
0 голосов
/ 19 марта 2019

Мне нужно прокрутить DIV для печати всей страницы.

Я уже пробовал SendKeys на элементе DIV, но он прокручивал всю страницу. Я не хочу, чтобы решение прокручивало до определенного объекта, потому что у меня много разных экранов с этими атрибутами с разными элементами.

DIV:

<div class="content modal-overflow">

Класс CSS этого:

  .modal-overflow
 {  
  max-height:430px;
  overflow:auto
 }

430px - видимая часть DIV. Весь DIV имеет 750px.

код:

 <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 # с ChromeDriver и FirefoxDriver

Как я могу сделать эту прокрутку, печатая весь DIV?

1 Ответ

0 голосов
/ 20 марта 2019

Вот способ сделать снимок экрана конкретного элемента.

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);

Не уверен, чтоВы имеете в виду «Я не хочу, чтобы решение прокручивало до определенного объекта, потому что у меня есть много разных экранов с этими атрибутами с разными элементами».Вы хотите просмотреть содержимое модального окна?

...