【问题标题】:Navigating inside website and taking screenshot through code在网站内部导航并通过代码截取屏幕截图
【发布时间】:2016-09-29 11:33:41
【问题描述】:
  • 我需要为最终结帐页面截取多个不同购物网站的屏幕截图。
  • 购物车中的所有商品选择和其他页面导航都必须通过代码进行。
  • 输出的截图应该是图片文件(jpg,png)或者插入一个docx文件(如果可能的话)
  • 我可以使用什么工具和技术来完成这项任务?

我对通过 php 和 phantomjs 进行屏幕捕获有一点想法,但仅限于静态网页。我是新手,如果有人在这里指导我会很高兴。

例如:

要打开 google.com,请搜索“stackoverflow”并进一步打开 stackoverflow.com 并截取主页的屏幕截图。这些步骤必须通过代码(即)自动化完成。提前谢谢你们!!

【问题讨论】:

标签: javascript java php web screenshot


【解决方案1】:

Selenium 网站在 http://www.seleniumhq.org/docs/03_webdriver.jsp#introducing-the-selenium-webdriver-api-by-example 上有一个示例,说明如何从 Java(使用 Firefox 作为浏览器)执行类似的操作

这是一个快速的 TL;DR 版本。它不会点击进入 Stack Overflow,而是应该截取该术语的 Google 结果的屏幕截图。无论如何,当您已经知道网站的 URL 时通过 Google 可能是一个多余的步骤,我相信您可以修改此示例以使其执行您需要的操作。

WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");

// Find the text input element by its name
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("Stack Overflow");
element.submit();

// Google's search is rendered dynamically with JavaScript.
// Wait for the page to load, timeout after 10 seconds
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
    public Boolean apply(WebDriver d) {
        return d.getTitle().toLowerCase().startsWith("Stack Overflow");
    }
});

// Screenshot of search results (screen not whole page)                                        
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("c:\\screenshot.png"));

屏幕截图代码来自 Sergii Pozharov 在Take a screenshot with Selenium WebDriver 的回答 - 请参阅其他注意事项,例如驱动程序的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2011-01-04
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多