2016年3月7日星期一

如何在Appium拍摄截图?



在任何Android自动化工具中捕获屏幕截图是非常重要的一部分。在任何Android测试套装中,如果您在测试失败期间拍摄截图,那么您可以非常快速且有效地识别和捕获缺陷。您可以与开发人员分享相同的屏幕截图以报告您的错误。运行自动化工具时拍摄屏幕截图为测试仪保存大量时间。在这篇文章中,我们将学习如何为我们的Appium测试用例失败拍摄截图。

看看我准备在Appium测试用例故障中拍摄屏幕截图的简单示例。首先创建一种方法 Capturescreenshot() 在此方法中,您可以决定如何命名目录和 .png.. 每个屏幕截图的文件。您可以使用日期或测试库名称唯一地命名您的名称 .png.. 文件。

在下面的测试用例中,我们将存储我们的屏幕截图 文件夹/ dir. 命名为 截屏。我将向您展示两种方法来首先使用屏幕拍摄 当前日期,其次使用任何名称供您选择。

视频教程 -

 

第一个方法 -
1.使用Web驱动程序给出的界面“拍摄“。
2.使用当前日期和时间使用 日期格式 班级。
3.然后将其存储在屏幕截图文件夹中,名称设置为当前日期和时间。


public void CaptureScreenShot
{
    AppiumDriver driver;
    String folder_name;
    DateFormat df;
   @Before
    public void testCaseSetup()throws  Exception
    {

        DesiredCapabilities cap=new DesiredCapabilities();
        cap.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
        cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Android device");
        cap.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, "4000");
        cap.setCapability(MobileCapabilityType.APP, "c://apks//seekbarsample.apk");
        cap.setCapability("noReset", true);
        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);

    }
    @Test
    public void testSeekBar()throws  Exception
    {
           //Locating seekbar using resource id
            WebElement seek_bar=driver.findElement(By.id("seek_bar"));
            // get start co-ordinate of seekbar
            int start=seek_bar.getLocation().getX();
            //Get width of seekbar
            int end=seek_bar.getSize().getWidth();
            //get location of seekbar vertically
            int y=seek_bar.getLocation().getY();

        // Select till which position you want to move the seekbar
        TouchAction action=new TouchAction(driver);

        //Move it will the end
        action.press(start,y).moveTo(end,y).release().perform();

        //Move it 40%
        int moveTo=(int)(end*0.4);
        action.press(start,y).moveTo(moveTo,y).release().perform();
        
        captureScreenShots();
    }
    public void captureScreenShots() throws IOException {
        folder_name="截屏";
        File f=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        //Date format fot screenshot file name
        df=new  SimpleDateFormat("dd-MMM-yyyy__hh_mm_ssaa");
        //create dir with given folder name
        new File(folder_name).mkdir();
        //Setting file name
        String file_name=df.format(new Date())+“。 png..";
        //coppy screenshot file into screenshot folder.
        FileUtils.copyFile(f, new File(folder_name + "/" + file_name));
    }
    @After
    public void testCaseTearDown()
    {
        driver.quit();
    }
}

第二种方法 -
1.使用Web驱动程序给出的界面“拍摄“。
2.获取从测试用例调用捕获函数()方法的名称。
3. 然后将其存储在屏幕截图文件夹中,名称设置为字符串通过测试案例。


public void CaptureScreenShot
{
    AppiumDriver driver;
    String folder_name;
    DateFormat df; 
    @Before
    public void testCaseSetup()throws  Exception
    {

        DesiredCapabilities cap=new DesiredCapabilities();
        cap.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
        cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Android device");
        cap.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, "4000");
        cap.setCapability(MobileCapabilityType.APP, "c://apks//seekbarsample.apk");
        cap.setCapability("noReset", true);
        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);

    }
    @Test
    public void testSeekBar()throws  Exception
    {
           //Locating seekbar using resource id
            WebElement seek_bar=driver.findElement(By.id("seek_bar"));
            // get start co-ordinate of seekbar
            int start=seek_bar.getLocation().getX();
            //Get width of seekbar
            int end=seek_bar.getSize().getWidth();
            //get location of seekbar vertically
            int y=seek_bar.getLocation().getY();

        // Select till which position you want to move the seekbar
        TouchAction action=new TouchAction(driver);

        //Move it will the end
        action.press(start,y).moveTo(end,y).release().perform();

        //Move it 40%
        int moveTo=(int)(end*0.4);
        action.press(start,y).moveTo(moveTo,y).release().perform();
        
                captureScreenShots("Seekbar");
    }
   public void captureScreenShots(String file_name) throws IOException {
        folder_name="截屏";
        File f=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        //create dir with given folder name
        new File(folder_name).mkdir();
        //Setting file name
        file_name=df.format(new Date())+“。 png..";
        //coppy screenshot file into screenshot folder.
        FileUtils.copyFile(f,new File(folder_name + "/" + file_name));
    }
    @After
    public void testCaseTearDown()
    {
        driver.quit();
    }
}
我希望本教程能够帮助您在Appium测试案件中拍摄屏幕镜头。

使用本教程,您可以在Appium测试用例失败时编写测试代码以获取屏幕截图,以屏幕截图验证UI 在多个设备上。

我希望你找到本教程有用。分享您的反馈和 评论部分的问题下面。请遵循QA自动化社交媒体 获取最新的帖子更新。快乐测试:-)

8评论:

  1. 惊人,谢谢我的朋友,当我被扔进硒时,我也像你的横幅形象一样地坐着。
    当我开始学习时,我明白它真的很酷。
    我可以担保Webdriver已经证明了Selenium框架中的最佳功能。
    非常感谢花时间分享精彩的文章。
    钦奈硒培训学院

    回复删除
  2. 嘿!
    你测试了方法`捕获扫描(String file_name)`吗? :)
    您通过代码`df.format(新日期())+删除`file_name`变量".png"`

    回复删除
  3. 正是我需要的,
    惊人,非常感谢。

    回复删除
  4. 有用的post.thanks用于分享信息的帖子。保留它。 股票审计审计 | 固定资产审核 | CFA审核

    回复删除
  5. 哇.....这些信息对我非常有帮助。这个非常有用的是分享这样一个有用的帖子..... 重复付款审核
    连续监测
    重复的发票审计

    回复删除
  6. 有没有办法拍摄完整的页面截图?

    回复删除