首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在selenium中完全加载新选项卡后,如何截取其屏幕截图

问在selenium中完全加载新选项卡后,如何截取其屏幕截图
EN

Stack Overflow用户
提问于 2020-06-24 13:29:09
回答 2查看 188关注 0票数 0
代码语言:javascript
复制
 @Test
public void testHeaderlinks() throws IOException {

    homePage=new HomePage();

    homePage.ClickmenuHolidays();
    homePage.Clickmenuattraction();
    
    
    homePage.Clickmenuhotdeal();
    String originalHandle = driver.getWindowHandle();
  
    for(String handle : driver.getWindowHandles()) {
        if (!handle.equals(originalHandle)) {
            driver.switchTo().window(handle);
           
            driver.close();
        }
    }
    driver.switchTo().window(originalHandle);
}

public static void Takescreenshot(String filename) throws IOException {
    File file= ((TakesScreenshot))driver.getScreenshotAs(OutputType.FILE);
    FileUtils.copyFile(file,new File("C:\\Users\\User\\Desktop\\POMMabuhayFinal\\src\\main\\java\\Screnshots\\"+filename+".jpg"));
}

在我的代码中,我在新标签中点击超链接,然后关闭这些标签(在点击所有超链接后关闭所有标签)

我的问题是如何截取打开的标签的屏幕截图(我想截取所有打开的新标签)

EN

回答 2

Stack Overflow用户

发布于 2020-06-24 15:27:23

使用WebDriverWait等待选项卡/页面加载,然后在迭代选项卡时调用Takescreenshot方法

代码语言:javascript
复制
@Test
    public void testHeaderlinks() throws IOException {
    
        homePage=new HomePage();    
        homePage.ClickmenuHolidays();
        homePage.Clickmenuattraction();        
        homePage.Clickmenuhotdeal();

        String originalHandle = driver.getWindowHandle();

        int count = 1;
        for(String handle : driver.getWindowHandles()) {
            if (!handle.equals(originalHandle)) {
            // Initialize WebDriverWait with 15 secs wait timeout or expected wait timeout
            WebDriverWait wait = new WebDriverWait(myDriver, 15);
            // Wait for page to load
            wait.until(webDriver -> ((JavascriptExecutor) myDriver).executeScript("return document.readyState").toString().equals("complete"));
            driver.switchTo().window(handle);
            // Take screenshot of your current tab
            Takescreenshot("tabImage" + String.valueOf(count)) // You can use your own imageName
            driver.close();
            count++;
            }
        }
        driver.switchTo().window(originalHandle);
    }
    
    public static void Takescreenshot(String filename) throws IOException {
        File file= ((TakesScreenshot))driver.getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(file,new File("C:\\Users\\User\\Desktop\\POMMabuhayFinal\\src\\main\\java\\Screnshots\\"+filename+".jpg"));
    }
票数 0
EN

Stack Overflow用户

发布于 2020-06-24 14:58:33

请试试这个

代码语言:javascript
复制
public void TakeScreenShot()
    {
        try
        {
            string text = AppDomain.CurrentDomain.BaseDirectory + "\\screenshots\\";
            if (!Directory.Exists(text))
            {
                Directory.CreateDirectory(text);
            }
            if (Directory.Exists(text))
            {
                string text2 = text + XYZ+ ".jpeg";
                if (File.Exists(text2))
                {
                    File.Delete(text2);
                }
                ((ITakesScreenshot)driver).GetScreenshot().SaveAsFile(text2, ScreenshotImageFormat.Jpeg);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62548294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档