Selenium C# Как найти элемент изображения?

Я работаю над проектом, в котором делается снимок экрана с изображением продукта. Затем это изображение обрезается и сохраняется.

Вот код

                    Screenshot screenshot = ((ITakesScreenshot)driver).GetScreenshot();

                    using (var ms = new MemoryStream(screenshot.AsByteArray))
                    using (var imgShot = Image.FromStream(ms))
                    using (var src = new Bitmap(imgShot))
                    {
                        IWebElement element = driver.FindElement(By.Name("viewport"));
                        Rectangle cropRect = new Rectangle(element.Location.X, element.Location.Y, element.Size.Width, element.Size.Height);

                        var clone = src.Clone(cropRect, src.PixelFormat);
                        clone.Save(_SavePath);
                    }

Ссылаясь на ссылку на изображение ниже, как мне использовать C# Selenium driver.FindElement для выбора этого изображения: Это то, что я пытаюсь использовать:IWebElement element = driver.FindElement(By.Name("viewport"));

Изображение:http://dealer.rectron.co.za/ImageServer.aspx?QualifyingProductID=c471d4fd-fd97-48b8-a709-441b18c1830c

Вот HTML-код изображения:

<html><head><meta name="viewport" content="width=device-width, minimum-scale=0.1"><title>ImageServer.aspx (335×328)</title></head><body style="margin: 0px; background: #0e0e0e;"><img style="-webkit-user-select: none;margin: auto;" src="http://dealer.rectron.co.za/ImageServer.aspx?QualifyingProductID=c471d4fd-fd97-48b8-a709-441b18c1830c"></body></html>

Когда я пытаюсь обрезать изображение, возникает следующее исключение:

System.ArgumentException: 'Rectangle'{X = 0,Y = 0,Width = 0,Height = 0}'не может иметь ширину или высоту, равную 0.'

Я думаю, что то, как я использую FindElement, может быть неправильным. Спасибо

1 ответ

Решение

Ваш локатор неверен, вы создаете <meta>элемент, который не отображается на странице и не имеет размеров. Исправить локатор нужно следующим образом:IWebElement element = driver.FindElement(By.XPath("//img"));

Другие вопросы по тегам