如何使用Selenium WebDriver 拍摄整个网页的屏幕快照( 全屏屏幕截图 ),而不仅仅是部分( 从上到下 )?
我的代码: ( Java绑定 )
System.setProperty("webdriver.chrome.driver","/home/alex/Downloads/chromedriver_html" target="_blank">linux64/chromedriver");
WebDriver driver = new ChromeDriver();
driver.get("http://google.com");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File(RESULT_FILENAME));
关于如何解决这个问题的任何想法?
LE: 我看到很多人都对整页的截图感兴趣,所以我想我可能会用一些肯定的答案( 银色子弹 )来更新答案。
有很多Web测试框架可以( 只需最少的设置和工作 )即可生成 整页的屏幕截图
。我来自NodeJS测试环境,因此只能担保以下内容:WebdriverIO和Google的Puppeteer。
如果有人对使用WebdriverIO的简便方法感兴趣,请查看此答案。
简而言之, 如果您仅使用Selenium , 则 不能 , 您不能
。但是,您可以做的是充分利用设备的(监视)视口。
因此,请使用来启动浏览器实例(驱动程序)ChromeOptions()
,这是设置ChromeDriver特定功能的方法。我们可以执行以下操作:
--start-maximized
开关);F11
在Windows Control+Cmd+F
上为-key,在Mac 上为- 键,使用--start-fullscreen
开关)。您的代码应如下所示:
// Setting your Chrome options (Desired capabilities)
ChromeOptions options = new ChromeOptions();
options.add_argument('--start-maximized');
options.add_argument('--start-fullscreen');
// Creating a driver instance with the previous capabilities
WebDriver driver = new ChromeDriver(options);
// Load page & take screenshot of full-screen page
driver.get("http://google.com");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
现在关于整版的问题,所有的驱动程序(chromedriver
,geckodriver
,IEDriver
,EdgeDriver
,等)正在实施的webdriver
W3C
标准。因此,它们取决于WebDriver团队希望公开不同功能的功能的方式,在我们的例子中为“ Take
Screenshot”。
如果您阅读该定义,则它明确指出以下内容:
“获取屏幕截图”命令获取顶级浏览上下文的 VIEWPORT 的屏幕截图。
从旧的角度来看,某些驱动程序能够生成完整的屏幕截图(在此处了解更多信息),例如旧的FirefoxDriver,IEDriver等。现在已经不再是这样了,因为它们现在都实现了WebDriver
W3C标准。
问题内容: 是否可以使用JavaScript截取网页的屏幕截图,然后将其提交回服务器? 我不太担心浏览器的安全性问题。等,因为实施将针对HTA。但是有可能吗? 问题答案: 我已经通过使用ActiveX控件为HTA完成了此操作。在VB6中构建控件以截取屏幕截图非常容易。我必须使用keybd_event API调用,因为SendKeys无法执行PrintScreen。这是该代码: 这只会使您到达将窗口
在selenium web驱动程序中,我无法使用testng和maven将其显示在控制台中 JAVAlang.VerifyError:(类:junereleasemain/NewTest,方法:testFirstResult签名:()V)java函数的参数不兼容。朗,同学们。java上的getDeclaredMethods0(本机方法)。朗,同学们。java上的privateGetDeclared
我有一个有30行的tableView,我还有一个位于tableView顶部的视图(不在tableView标题中),我想捕获屏幕的完整屏幕截图,包括视图和tableView的所有行,但我只能捕获tableView和视图的可见行。请帮助我,提前谢谢。这是我的代码和模拟器的屏幕截图。注意(我不希望我的视图位于tableview标题中,因为当我们滚动tableview时,它也会滚动,这就是为什么视图是固定
我试图创建一个通用的网络爬虫,将去一个网站和截图。我使用的是Python、Selnium和PhantomJS。问题是截图并没有捕获页面上的所有图像。例如,如果我去you tube,它不会捕捉主页图像下面的图像。(我没有足够高的rep来发布屏幕截图)我认为这可能与动态内容有关,但我已经尝试了等待函数,如隐式等待和on set_page_load_timeout方法。因为这是一个通用的爬虫,我不能等待
问题内容: 我想实现一个Java方法,该方法以URL作为输入并将整个网页(包括CSS,图像,JS(所有相关资源))存储在磁盘上。我已经使用Jsoup html解析器来获取html页面。现在,我想实现的唯一选择是使用jsoup获取页面,现在解析html内容并将相对路径转换为绝对路径,然后再次请求获取javascript,图像等并将其保存在磁盘上。我还阅读了有关HTML清洁器,htmlunit解析器的
我想实现一个java方法,它将URL作为输入,并将包括css、图像、js(所有相关资源)在内的整个网页存储在我的磁盘上。我已经使用Jsoup html解析器来获取html页面。现在,我想实现的唯一选项是使用jsoup获取页面,现在解析html内容,将相对路径转换为绝对路径,然后发出另一个获取javascript、图像等的请求。并将它们保存在磁盘上。我也读过html cleaner和htmlunit