Java 如何将原始html转换为我可以用Selenium测试的内容?

Java 如何将原始html转换为我可以用Selenium测试的内容?,java,html,selenium,junit,automated-tests,Java,Html,Selenium,Junit,Automated Tests,我的团队创建了一个CMS。当客户端调用它的API时(使用POST-with参数),它用原始HTML响应,然后将原始HTML注入客户端页面 我被指派专门为HTML(而不是客户端页面)创建自动测试。在我的电脑上,我可以将HTML保存在一个文件中,然后用浏览器打开,在本地进行测试 为了让测试在构建服务器上运行,或者通过Sauce实验室运行,我试图找到一种呈现HTML的方法,这样我就可以让我的测试框架抓取一个屏幕截图进行比较。我的测试框架是使用Selenium绑定的Java/Junit,我使用Appli

我的团队创建了一个CMS。当客户端调用它的API时(使用POST-with参数),它用原始HTML响应,然后将原始HTML注入客户端页面

我被指派专门为HTML(而不是客户端页面)创建自动测试。在我的电脑上,我可以将HTML保存在一个文件中,然后用浏览器打开,在本地进行测试

为了让测试在构建服务器上运行,或者通过Sauce实验室运行,我试图找到一种呈现HTML的方法,这样我就可以让我的测试框架抓取一个屏幕截图进行比较。我的测试框架是使用Selenium绑定的Java/Junit,我使用Applitools进行屏幕截图比较

我研究了PhantomJS,但在JS世界中迷失了一点(我对Java更熟悉)。此外,这些文物似乎在Maven时期就已经相当过时了。如果有人提出这一点,我将非常感谢举个例子


我已经找到了与使用Junit方法(利用Rest Assured)发布到http端点相关的主题,但我仍然停留在如何处理HTML响应以及如何将其插入到Selenium测试中。请问,有人能提供指导或建议一个工具来做这件事吗?

我会将HTML保存到一个文件中,并使用IE来显示该文件

您可以使用数据方案加载html:

driver.get("data:text/html;charset=utf-8," + URLEncoder.encode(pageHtml, "UTF-8"));
尽管您可能会受到长度的限制,并且它不会加载单独文件夹中的资源

另一种方法是直接在页面中执行请求,然后用结果重写整个页面

比如:

//设置域
驱动程序。获取(“https://stackoverflow.com");
//从请求中浏览一些HTML
导航(驱动程序,“发布”,“搜索”,“q=abcd”);
public void导航(驱动程序、方法、路径、主体){
字符串JS_导航_请求=
(函数(方法、路径、主体、回调){+
“var xhr=new XMLHttpRequest();”+
xhr.open(方法、路径、true)+
“xhr.onloadend=函数(){”+
“document.write(xhr.responseText);”+
“document.close();”+
“回调();”+
"    };                                    " +
“文件。写(“”);”+
“xhr.send(body);”+
}).应用(窗口,参数);
((JavascriptExecutor)驱动程序)executeAsyncScript(JS_导航_请求、方法、路径、正文);
}

您可以使用badboy工具捕获本地保存的HTML文件的屏幕截图,但这不包括selenium集成。只需将HTML的基线截图保存在本地即可

  • 使用一些预定义的命名约定(如SS_1、SS_2)将所有响应保存在HTML中
  • 打开badboy并在浏览窗格(右上角)中传递1个文件的路径,或使用“工具请求”(拖放)并提供本地保存的第一个文件的路径
  • 将快照工具置于其下方,并配置为保存快照
  • 添加变量${iterator}并提供值
  • 双击“Request”并将文件名后缀从SS_1更改为${iterator}
  • 现在,通过双击步骤并选择第二个单选按钮(针对每个变量值),将步骤配置为针对每个变量值运行
  • 参考工具-


    我喜欢您建议的第一种方法,但它似乎只是将HTML显示为文本。。。我将尝试第二种方法。谢谢你的回复@Beth H,对不起,我忘记了数据类型。当我将第一种方法更改为:
    driver.get(“data:text/html;charset=utf-8,”+response)时,它工作得非常好