使用Java Selenium WebDriver获取网页使用的javascripts的名称

时间:2017-10-24 12:34:35

标签: javascript java selenium selenium-webdriver

我试图自动化一个网站,我需要找到哪个JS文件在哪个特定URL上调用。 是否有任何代码来获取网页使用/调用的JS文件的名称。 通常我需要开发人员工具中列出的JS文件的名称>网络> JS选项卡。 Image of what I want to fetch。 (Stackoverflow主页的示例图片)。

我尝试过代码

DesiredCapabilities d = DesiredCapabilities.chrome();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
d.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
WebDriver driver = new ChromeDriver(d);
driver.get("https://stackoverflow.com");
LogEntries les = driver.manage().logs().get(LogType.SERVER);
for (LogEntry le : les) {
     System.out.println(le.getMessage());
}

但是这段代码提供了我不需要的很多细节。有没有办法只获取JS文件的名称?

1 个答案:

答案 0 :(得分:2)

您可以通过JavaScript从Resource Timing API获取。请参阅下面的示例:

ArrayList<String> results = (ArrayList<String>) ((JavascriptExecutor)driver).executeScript(
"return window.performance.getEntries().filter(e=>e.initiatorType==='script').map(item=>item.name);");
results.forEach((url)->System.out.println(url));