iframe中的C#硒元素屏幕截图

iframe中的C#硒元素屏幕截图,c#,selenium,C#,Selenium,我运行下面的代码来获得一个logo截图,但是当元素在iframe中时,元素的位置和大小似乎不起作用。元素截图在iframe中是如何工作的 using System; using System.Drawing; using System.IO; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; var _driver = new ChromeDriver(); _driver.Navigate().GoToUrl("https://www.

我运行下面的代码来获得一个logo截图,但是当元素在iframe中时,元素的位置和大小似乎不起作用。元素截图在iframe中是如何工作的

using System;
using System.Drawing;
using System.IO;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

var _driver = new ChromeDriver();
_driver.Navigate().GoToUrl("https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_iframe");
_driver.SwitchTo().Frame("iframeResult");
_driver.SwitchTo().Frame(_driver.FindElement(OpenQA.Selenium.By.XPath("//iframe[@src='https://www.w3schools.com']")));
IWebElement element = _driver.FindElement(OpenQA.Selenium.By.XPath("//a[@class='w3schools-logo']"));
Console.WriteLine(element.Location); //Return 0
Console.WriteLine(element.Size); //Return 0
Screenshot sc = ((ITakesScreenshot)_driver).GetScreenshot();
using (var img = Image.FromStream(new MemoryStream(sc.AsByteArray)) as Bitmap)
{
 img?.Clone(new Rectangle(element.Location, element.Size), img.PixelFormat).Save(@"C:\test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}

我找到了解决办法

new Actions(_driver).MoveToElement(element).Build().Perform();
Thread.Sleep(1000);
var sc = ((ITakesScreenshot) _driver).GetScreenshot();
var remoteWebElement = element as RemoteWebElement;
using (var img = Image.FromStream(new MemoryStream(sc.AsByteArray)) as Bitmap)
{
if (remoteWebElement != null)
 img?.Clone(new Rectangle(remoteWebElement.LocationOnScreenOnceScrolledIntoView,remoteWebElement.Size), img.PixelFormat).Save(file, ImageFormat.Jpeg);
}