Selenium Webdriver를 사용하여 전체 페이지가 아닌 특정 요소의 스크린 샷을 캡처하는 방법은 무엇입니까?


82

현재 Selenium WebDriver를 사용하여 스크린 샷을 캡처하려고합니다. 하지만 전체 페이지 스크린 샷 만 얻을 수 있습니다. 그러나 내가 원했던 것은 페이지의 일부 또는 ID 또는 특정 요소 로케이터를 기반으로 특정 요소를 캡처하는 것입니다. (예를 들어 이미지 id = "Butterfly"로 사진을 캡처하고 싶습니다.)

선택한 항목 또는 요소별로 스크린 샷을 캡처 할 수있는 방법이 있습니까?


1
AFAIK, 시설은 전체 페이지를 캡처하는 것입니다. 요소 ID 또는 이름을 입력으로 사용하는 스크린 샷 기능이 없습니다.
Hemanth

누구나 C #에서 BUfferedImage에 대한 메서드 호출이 무엇인지 말할 수 있습니까? 이와 관련된 유사한 방법을 찾을 수 없습니다.
fj123 dec.

답변:


117

다음과 같이 전체 페이지 스크린 샷을 자르면 요소 스크린 샷을 얻을 수 있습니다.

driver.get("http://www.google.com");
WebElement ele = driver.findElement(By.id("hplogo"));

// Get entire page screenshot
File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
BufferedImage  fullImg = ImageIO.read(screenshot);

// Get the location of element on the page
Point point = ele.getLocation();

// Get width and height of the element
int eleWidth = ele.getSize().getWidth();
int eleHeight = ele.getSize().getHeight();

// Crop the entire page screenshot to get only element screenshot
BufferedImage eleScreenshot= fullImg.getSubimage(point.getX(), point.getY(),
    eleWidth, eleHeight);
ImageIO.write(eleScreenshot, "png", screenshot);

// Copy the element screenshot to disk
File screenshotLocation = new File("C:\\images\\GoogleLogo_screenshot.png");
FileUtils.copyFile(screenshot, screenshotLocation);

답장을 보내 주셔서 감사합니다. 그러나 내 웹 드라이버가 귀하의 웹 드라이버와 다른 이유. 내가 webdriver 셀레늄의 오래된 버전을 사용하고 있습니다 ... 그것은 IWebDriver, ITakeScreenshot을 사용하고 더 OutputType.FILE와의 BufferedImage가 없다?
fj123

C # 웹 드라이버 바인딩을 사용하고 있습니까?
Surya

네, 그렇게 생각합니다. 이전에는 RC를 사용하고 있었는데 최근에 웹 드라이버를 사용하도록 변경했습니다.
fj123

이 구현은 Java 바인딩을위한 것입니다. 이 개념은 C #에서도 작동합니다. 하지만 저는 C # 언어를 잘 모릅니다. 당신은 C #을 해당 라이브러리 (BufferedImage의, ImageIO에서 ...)를 사용합니다
수르야

4
위 코드는 Chrome에서 작동하지 않습니다. 예외 java.awt.image.RasterFormatException : (y + 높이)가 래스터 외부에 있습니다. BufferedImage eleScreenshot = fullImg.getSubimage (point.getX (), point.getY (), eleWidth, eleHeight);
리폰 알 Wasim

13

다음은 Selenium 웹 드라이버와 Pillow를 사용하는 Python 3 버전입니다. 이 프로그램은 전체 페이지의 스크린 샷을 캡처하고 해당 위치에 따라 요소를 자릅니다. 요소 이미지는 image.png로 제공됩니다. Firefox는 element.screenshot_as_png ( 'image_name')을 사용하여 직접 요소 이미지 저장을 지원합니다.

from selenium import webdriver
from PIL import Image

driver = webdriver.Chrome()
driver.get('https://www.google.co.in')

element = driver.find_element_by_id("lst-ib")

location = element.location
size = element.size

driver.save_screenshot("shot.png")

x = location['x']
y = location['y']
w = size['width']
h = size['height']
width = x + w
height = y + h

im = Image.open('shot.png')
im = im.crop((int(x), int(y), int(width), int(height)))
im.save('image.png')

최신 정보

이제 크롬은 개별 요소 스크린 샷도 지원합니다. 따라서 아래와 같이 웹 요소의 스크린 샷을 직접 캡처 할 수 있습니다.

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.google.co.in')
image = driver.find_element_by_id("lst-ib").screenshot_as_png 
# or
# element = driver.find_element_by_id("lst-ib")
# element.screenshot_as_png("image.png")

4
나는 그것이 element.size포인트 단위로 주어 졌음을 확신 하지만,에서 생성 된 스크린 샷 driver.save_screenshot은 픽셀 크기를 가지고 있습니다. 다음에 곱셈이 필요 - 화면 1 (2의 비율 등은, 망막 맥북 포인트 당 두 개의 픽셀이) 이외의 픽셀 - 투 - 포인트 비율이있는 경우 wh그 비율을.
BallpointBen

새 버전은 element.screenshot ( 'elemenent.png')을 사용할 수있었습니다. @ rovr138의 답변을 참조하십시오
tinyhare

@tinyhare 답변이 생성되었을 때 Firefox에서만 사용할 수있었습니다. 지금은 크롬에서도 사용할 수 있다고 생각합니다. 답변 업데이트.
codeslord

1
@puppet 인 메모리 로딩을 위해 이것을 수행하십시오. from StringIO import StringIO; from PIL import Image; img = Image.open(StringIO(image))
codeslord

1
@puppet과 비슷한 문제가 있습니다. 이것은 나를 위해 일한 것입니다 : import io; from PIL import Image; img = Image.open(io.BytesIO(image)); img.save("image.png")
Somto Muotoe

9

에서 Node.js, 나는 일 다음과 같은 코드를 작성하지만, 셀레늄의 공식 WebDriverJS 기반으로하지만 기반으로하지 않습니다 SauceLabs's WebDriver: WD.js 와라는 매우 컴팩트 한 이미지 라이브러리 EasyImage .

요소의 스크린 샷을 실제로 찍을 수는 없지만 먼저 전체 페이지의 스크린 샷을 찍은 다음 원하는 페이지 부분을 선택하고 특정 부분을 잘라내는 것입니다.

browser.get(URL_TO_VISIT)
       .waitForElementById(dependentElementId, webdriver.asserters.isDisplayed, 3000)
       .elementById(elementID)
        .getSize().then(function(size) {
            browser.elementById(elementID)
                   .getLocation().then(function(location) {
                        browser.takeScreenshot().then(function(data) {
                            var base64Data = data.replace(/^data:image\/png;base64,/, "");
                            fs.writeFile(filePath, base64Data, 'base64', function(err) {
                                if (err) {
                                    console.log(err);
                                } 
                                else {
                                    cropInFile(size, location, filePath);
                                }
                                doneCallback();
                        });
                    });
                });
            }); 

그리고 cropInFileFunction은 다음과 같습니다 :

var cropInFile = function(size, location, srcFile) {
    easyimg.crop({
            src: srcFile,
            dst: srcFile,
            cropwidth: size.width,
            cropheight: size.height,
            x: location.x,
            y: location.y,
            gravity: 'North-West'
        },
        function(err, stdout, stderr) {
            if (err) throw err;
        });
};

EasyImage 라이브러리가 손상되었습니다 : "ImageMagickMissingError"
Nizar B.

9

Yandex의 ASHOT 프레임 워크는 Selenium WebDriver 스크립트에서 스크린 샷을 찍는 데 사용할 수 있습니다.

  • 전체 웹 페이지
  • 웹 요소

이 프레임 워크는 https://github.com/yandex-qatools/ashot 에서 찾을 수 있습니다 .

스크린 샷을 찍는 코드는 매우 간단합니다.

전체 페이지

screenshot = new AShot().shootingStrategy(
new ViewportPastingStrategy(1000)).takeScreenshot(driver);
ImageIO.write(screenshot.getImage(), "PNG", new File("c:\\temp\\results.png"));

특정 웹 요소

screenshot = new AShot().takeScreenshot(driver, 
driver.findElement(By.xpath("(//div[@id='ct_search'])[1]")));

ImageIO.write(screenshot.getImage(), "PNG", new File("c:\\temp\\div_element.png"));

이 기사 에서 자세한 내용과 코드 샘플을 참조하십시오 .


당신은 또한해야 할 수도 있습니다주의 .shootingStrategy(ShootingStrategies.viewportPasting(100))와 너무 SPECIFIC WEB ELEMENT모드, 또는 모든 요소를 캡처 할 수 있습니다.
user1686407 2018

8

C #으로 코드를 요청하는 모든 사람을 위해 아래는 내 구현의 단순화 된 버전입니다.

public static void TakeScreenshot(IWebDriver driver, IWebElement element)
{
    try
    {
        string fileName = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + ".jpg";
        Byte[] byteArray = ((ITakesScreenshot)driver).GetScreenshot().AsByteArray;
        System.Drawing.Bitmap screenshot = new System.Drawing.Bitmap(new System.IO.MemoryStream(byteArray));
        System.Drawing.Rectangle croppedImage = new System.Drawing.Rectangle(element.Location.X, element.Location.Y, element.Size.Width, element.Size.Height);
        screenshot = screenshot.Clone(croppedImage, screenshot.PixelFormat);
        screenshot.Save(String.Format(@"C:\SeleniumScreenshots\" + fileName, System.Drawing.Imaging.ImageFormat.Jpeg));
    }
    catch (Exception e)
    {
        logger.Error(e.StackTrace + ' ' + e.Message);
    }
}

감사합니다. 그것은 매우 도움이되었고 요점과 완벽했습니다.
Sorrel Vesper 2016

5

스크린 샷을 찍는 데 많은 시간을 낭비했고 여러분의 스크린 샷을 저장하고 싶습니다. 나는 크롬 + 셀레늄 + C #을 사용했는데 그 결과는 완전히 끔찍했습니다. 마지막으로 함수를 작성했습니다.

driver.Manage().Window.Maximize();
             RemoteWebElement remElement = (RemoteWebElement)driver.FindElement(By.Id("submit-button")); 
             Point location = remElement.LocationOnScreenOnceScrolledIntoView;  

             int viewportWidth = Convert.ToInt32(((IJavaScriptExecutor)driver).ExecuteScript("return document.documentElement.clientWidth"));
             int viewportHeight = Convert.ToInt32(((IJavaScriptExecutor)driver).ExecuteScript("return document.documentElement.clientHeight"));

             driver.SwitchTo();

             int elementLocation_X = location.X;
             int elementLocation_Y = location.Y;

             IWebElement img = driver.FindElement(By.Id("submit-button"));

             int elementSize_Width = img.Size.Width;
             int elementSize_Height = img.Size.Height;

             Size s = new Size();
             s.Width = driver.Manage().Window.Size.Width;
             s.Height = driver.Manage().Window.Size.Height;

             Bitmap bitmap = new Bitmap(s.Width, s.Height);
             Graphics graphics = Graphics.FromImage(bitmap as Image);
             graphics.CopyFromScreen(0, 0, 0, 0, s);

             bitmap.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);

             RectangleF part = new RectangleF(elementLocation_X, elementLocation_Y + (s.Height - viewportHeight), elementSize_Width, elementSize_Height);

             Bitmap bmpobj = (Bitmap)Image.FromFile(filePath);
             Bitmap bn = bmpobj.Clone(part, bmpobj.PixelFormat);
             bn.Save(finalPictureFilePath, System.Drawing.Imaging.ImageFormat.Png); 

1
스크롤하지 않고 볼 수있는 요소를 캡처하는 한 완벽하게 작동합니다. 캡처하기 위해 요소로 스크롤해야하는 경우 페이지 상단에서 y 오프셋이 계산되어 전체 화면 이미지의 경계를 초과합니다. 따라서 가장 쉬운 해결책은 화면 크기 코드를 늘리는 것입니다. this.driver.manage (). window (). setSize (new Dimension (1680, 1050)); 또는 css를 통해 필요하지 않은 요소를 제거합니다. 적절한 해결책은 스크롤에서 y 오프셋을 계산하는 것입니다.
Ichwardort 2015

3

Surya의 대답 은 디스크 IO를 포함해도 괜찮다면 훌륭하게 작동합니다. 원하지 않는 경우이 방법이 더 나을 수 있습니다.

private Image getScreenshot(final WebDriver d, final WebElement e) throws IOException {
    final BufferedImage img;
    final Point topleft;
    final Point bottomright;

    final byte[] screengrab;
    screengrab = ((TakesScreenshot) d).getScreenshotAs(OutputType.BYTES);

    img = ImageIO.read(new ByteArrayInputStream(screengrab));

    //crop the image to focus on e
    //get dimensions (crop points)
    topleft = e.getLocation();
    bottomright = new Point(e.getSize().getWidth(),
                            e.getSize().getHeight());

    return img.getSubimage(topleft.getX(),
                           topleft.getY(),
                           bottomright.getX(),
                           bottomright.getY());
}

원하는 경우 선언을 건너 뛰고 screengrab대신

img = ImageIO.read(
    new ByteArrayInputStream(
        ((TakesScreenshot) d).getScreenshotAs(OutputType.BYTES)));

더 깨끗하지만 명확성을 위해 그대로 두었습니다. 그런 다음 파일로 저장 하거나 JPanel에 마음껏 넣을 수 있습니다.


3

파이썬 3

Selenium 3.141.0 및 chromedriver 73.0.3683.68로 시도해 보았습니다.

from selenium import webdriver

chromedriver = '/usr/local/bin/chromedriver'
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument('window-size=1366x768')
chromeOptions.add_argument('disable-extensions')
cdriver = webdriver.Chrome(options=chromeOptions, executable_path=chromedriver)

cdriver.get('url')
element = cdriver.find_element_by_css_selector('.some-css.selector')

element.screenshot_as_png('elemenent.png')

전체 이미지를 가져 와서 전체 화면 이미지의 일부를 가져올 필요가 없습니다.

Rohit의 답변 이 생성 되었을 때 사용할 수 없었을 수도 있습니다 .


2
public void GenerateSnapshot(string url, string selector, string filePath)
    {
        using (IWebDriver driver = new ChromeDriver())
        {
            driver.Navigate().GoToUrl(url);
            var remElement = driver.FindElement(By.CssSelector(selector));
            Point location = remElement.Location;

            var screenshot = (driver as ChromeDriver).GetScreenshot();
            using (MemoryStream stream = new MemoryStream(screenshot.AsByteArray))
            {
                using (Bitmap bitmap = new Bitmap(stream))
                {
                    RectangleF part = new RectangleF(location.X, location.Y, remElement.Size.Width, remElement.Size.Height);
                    using (Bitmap bn = bitmap.Clone(part, bitmap.PixelFormat))
                    {
                        bn.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
                    }
                }
            }
            driver.Close();
        }
    }

2

JavaScript 솔루션을 찾고 있다면 여기에 요점이 있습니다.

https://gist.github.com/sillicon/4abcd9079a7d29cbb53ebee547b55fba

기본 아이디어는 동일합니다. 먼저 스크린 샷을 찍은 다음 잘라냅니다. 그러나 내 솔루션에는 다른 라이브러리가 필요하지 않으며 순수한 WebDriver API 코드 만 필요합니다. 그러나 부작용은 테스트 브라우저의 부하를 증가시킬 수 있다는 것입니다.


당신의 대답에 코드를 붙여 대신 다른 소스에 연결하십시오
supersan

2

다음은 C #의 확장 함수입니다.

public static BitmapImage GetElementImage(this IWebDriver webDriver, By by)
{
    var elements = webDriver.FindElements(by);
    if (elements.Count == 0)
        return null;

    var element = elements[0];
    var screenShot = (webDriver as ITakesScreenshot).GetScreenshot();
    using (var ms = new MemoryStream(screenShot.AsByteArray))
    {
        Bitmap screenBitmap;
        screenBitmap = new Bitmap(ms);
        return screenBitmap.Clone(
            new Rectangle(
                element.Location.X,
                element.Location.Y,
                element.Size.Width,
                element.Size.Height
            ),
            screenBitmap.PixelFormat
        ).ToBitmapImage();
    }
}

이제 다음과 같은 요소의 이미지를 가져 오는 데 사용할 수 있습니다.

var image = webDriver.GetElementImage(By.Id("someId"));

1

특정 요소의 스크린 샷을 찍을 수있는 기능이 내장 된 https://github.com/bfirsh/needle 자동화 된 시각적 비교를 위해 needle 도구를 사용 하는 것이 좋습니다 (CSS 선택기로 선택). 이 도구는 Selenium의 WebDriver에서 작동하며 Python으로 작성되었습니다.


1

Selenium의 특정 요소 스냅 샷을 찍는 기능 아래. 여기서 드라이버는 WebDriver 유형입니다.

private static void getScreenshot(final WebElement e, String fileName) throws IOException {
  final BufferedImage img;
  final Point topleft;
  final Point bottomright;
  final byte[] screengrab;
  screengrab = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
  img = ImageIO.read(new ByteArrayInputStream(screengrab));
  topleft = e.getLocation();
  bottomright = new Point(e.getSize().getWidth(), e.getSize().getHeight());
  BufferedImage imgScreenshot= 
      (BufferedImage)img.getSubimage(topleft.getX(), topleft.getY(), bottomright.getX(), bottomright.getY());
  File screenshotLocation = new File("Images/"+fileName +".png");    
  ImageIO.write(imgScreenshot, "png", screenshotLocation);
 }

자세한 내용은이 링크를 참조하십시오. [Automation Hub Point] ( automationhubpoint.blogspot.in/2017/01/… )
ER.swatantra

1

C # 코드 :

public Bitmap MakeElemScreenshot( IWebDriver driver, WebElement elem)
{
    Screenshot myScreenShot = ((ITakesScreenshot)driver).GetScreenshot();

    Bitmap screen = new Bitmap(new MemoryStream(myScreenShot.AsByteArray));
    Bitmap elemScreenshot = screen.Clone(new Rectangle(elem.Location, elem.Size), screen.PixelFormat);

    screen.Dispose();

    return elemScreenshot;
}

0
using System.Drawing;
using System.Drawing.Imaging;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;

public void ScreenshotByElement()
{
    IWebDriver driver = new FirefoxDriver();
    String baseURL = "www.google.com/"; //url link
    String filePath = @"c:\\img1.png";      

    driver.Navigate().GoToUrl(baseURL);
    var remElement = driver.FindElement(By.Id("Butterfly"));
    Point location = remElement.Location;

    var screenshot = (driver as FirefoxDriver).GetScreenshot();
    using (MemoryStream stream = new MemoryStream(screenshot.AsByteArray))
    {
        using (Bitmap bitmap = new Bitmap(stream))
        {
            RectangleF part = new RectangleF(location.X, location.Y, remElement.Size.Width, remElement.Size.Height);
            using (Bitmap bn = bitmap.Clone(part, bitmap.PixelFormat))
            {
                bn.Save(filePath, ImageFormat.Png);                        
            }
        }
    }
}

0

크롬에서 java.awt.image.RasterFormatException 예외가 발생 하거나 요소를보기로 스크롤하려는 경우 스크린 샷을 캡처합니다.

다음은 @Surya 답변의 해결책입니다.

        JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
        Long offsetTop = (Long) jsExecutor.executeScript("window.scroll(0, document.querySelector(\""+cssSelector+"\").offsetTop - 0); return document.querySelector(\""+cssSelector+"\").getBoundingClientRect().top;");

        WebElement ele = driver.findElement(By.cssSelector(cssSelector));

        // Get entire page screenshot
        File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        BufferedImage  fullImg = ImageIO.read(screenshot);

        // Get the location of element on the page
        Point point = ele.getLocation();

        // Get width and height of the element
        int eleWidth = ele.getSize().getWidth();
        int eleHeight = ele.getSize().getHeight();

        // Crop the entire page screenshot to get only element screenshot
        BufferedImage eleScreenshot= fullImg.getSubimage(point.getX(), Math.toIntExact(offsetTop),
                eleWidth, eleHeight);
        ImageIO.write(eleScreenshot, "png", screenshot);

        // Copy the element screenshot to disk
        File screenshotLocation = new File("c:\\temp\\div_element_1.png");
        FileUtils.copyFile(screenshot, screenshotLocation);

나는 selenium-java-2.53.1, 컴파일 그룹 : 'org.seleniumhq.selenium', 이름 : 'selenium-java', 버전 : '2.53.1', chrome-web-driver를 사용하고 있습니다. .xpath ( ".// IMG [@class = '보안 문자']") 웹 페이지에서 resident.uidai.gov.in/offlineaadhaar ,하지만 당신의 코드가 제대로 작동하지 않습니다. 페이지의 잘못된 부분이 잘립니다. 보안 문자가 잘 리도록 도와주세요.
vijay

0

이것은 내 버전입니다 .C #에서는 기본적으로 Brook의 답변에서 대부분을 얻고 내 목적에 맞게 수정했습니다.

public static byte[] GetElementImage(this IWebElement element)
    {
        var screenShot = MobileDriver.Driver.GetScreenshot();
        using (var stream = new MemoryStream(screenShot.AsByteArray))
        {
            var screenBitmap = new Bitmap(stream);
            var elementBitmap = screenBitmap.Clone(
                new Rectangle(
                    element.Location.X,
                    element.Location.Y,
                    element.Size.Width,
                    element.Size.Height
                ),
                screenBitmap.PixelFormat
            );
            var converter = new ImageConverter();
            return (byte[]) converter.ConvertTo(elementBitmap, typeof(byte[]));
        }
    }

-1

C #을 사용하고 내 솔루션에 Java 라이브러리가 포함되어 있으므로 이것이 작동하지 않을 것이라고 생각하지만 다른 사람들이 도움이 될 것입니다.

사용자 지정 스크린 샷 캡처를 위해 Shutterbug 라이브러리를 사용할 수 있습니다. 이 목적에 대한 구체적인 요청은 다음과 같습니다.

Shutterbug.shootElement(driver, element).save();

-1

@codeslord의 샘플 코드를 따랐지만 어떤 이유로 스크린 샷 데이터에 다르게 액세스해야했습니다.

 # Open the Firefox webdriver
 driver = webdriver.Firefox()
 # Find the element that you're interested in
 imagepanel = driver.find_element_by_class_name("panel-height-helper")
 # Access the data bytes for the web element
 datatowrite = imagepanel.screenshot_as_png
 # Write the byte data to a file
 outfile = open("imagepanel.png", "wb")
 outfile.write(datatowrite)
 outfile.close()

(Python 3.7, Selenium 3.141.0 및 Mozilla Geckodriver 71.0.0.7222 사용)


-2

@Brook의 답변의 수정 된 버전을 사용하고 있으며 페이지를 스크롤해야하는 요소에서도 잘 작동합니다.

public void TakeScreenshot(string fileNameWithoutExtension, IWebElement element)
{
    // Scroll to the element if necessary
    var actions = new Actions(_driver);
    actions.MoveToElement(element);
    actions.Perform();
    // Get the element position (scroll-aware)
    var locationWhenScrolled = ((RemoteWebElement) element).LocationOnScreenOnceScrolledIntoView;
    var fileName = fileNameWithoutExtension + ".png";
    var byteArray = ((ITakesScreenshot) _driver).GetScreenshot().AsByteArray;
    using (var screenshot = new System.Drawing.Bitmap(new System.IO.MemoryStream(byteArray)))
    {
        var location = locationWhenScrolled;
        // Fix location if necessary to avoid OutOfMemory Exception
        if (location.X + element.Size.Width > screenshot.Width)
        {
            location.X = screenshot.Width - element.Size.Width;
        }
        if (location.Y + element.Size.Height > screenshot.Height)
        {
            location.Y = screenshot.Height - element.Size.Height;
        }
        // Crop the screenshot
        var croppedImage = new System.Drawing.Rectangle(location.X, location.Y, element.Size.Width, element.Size.Height);
        using (var clone = screenshot.Clone(croppedImage, screenshot.PixelFormat))
        {
            clone.Save(fileName, ImageFormat.Png);
        }
    }
}

if스크롤이 필요할 때 크롭의 크기가 스크린 샷 크기의 1 픽셀을 초과했기 때문에 두 s가 필요했습니다 (적어도 크롬 드라이버의 경우).


방법을 시도 할 때이 오류가 발생합니다. 투명 프록시를 'OpenQA.Selenium.Remote.RemoteWebElement'유형으로 캐스팅 할 수 없습니다.
shanabus

Chrome 드라이버와 함께 독점적으로 사용합니다. 어떤 드라이버를 사용하십니까?
thepirat000 2017 년

ChromeDriver도 사용하고 있습니다. 내 테스트는 IWebElements를 사용하고 있으며 OpenQA.Selenium.Support nuget 패키지의 PageFactory 메서드를 따르고 있습니다.
shanabus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.