如果您无法修改页面内容,则可以使用代理或在浏览器中安装的扩展程序中使用内容脚本。在selenium中执行此 *** 作,您将编写一些代码将脚本作为现有元素的子元素之一注入,但是在页面加载之前(驱动程序的
get()调用返回时)您将无法运行脚本。
String name = (String) ((JavascriptExecutor) driver).executescript( "(function () { ... })();" ...
该文档未指定代码开始执行的时间。您可能希望在DOM开始加载之前就这样做,以使保证只能通过代理或扩展内容脚本路由来满足。
如果可以使用最少的工具来检测页面,则可以检测到特殊的url查询参数并加载其他内容,但是您需要使用内联脚本来实现。伪代码:
<html> <head> <script type="text/javascript"> (function () { if (location && location.href && location.href.indexOf("SELENIUM_TEST") >= 0) { var injectscript = document.createElement("script"); injectscript.setAttribute("type", "text/javascript"); //another option is to perform a synchronous XHR and inject via innerText. injectscript.setAttribute("src", URL_OF_EXTRA_script); document.documentElement.appendChild(injectscript); //optional. cleaner to remove. it has already been loaded at this point. document.documentElement.removeChild(injectscript); } })(); </script> ...
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)