最近采用爬虫爬取页面,chrome浏览器对flash支持不友好,需要手动触发,网上介绍方法
Map prefsoption = new HashMap<>();
//prefsoption.put("profile.managed_default_content_settings.images",1);
prefsoption.put("profile.content_settings.plugin_whitelist.adobe-flash-player",1);
prefsoption.put("profile.content_settings.exceptions.plugins.*,*.per_resource.adobe-flash-player",1);
options.setExperimentalOption("prefs",prefsoption);
public static String _base_url(String url){
if(StringUtils.isEmpty(url)) return url;
if(StringUtils.indexOf(url,"://")<=0){
url = String.format("http://%s",url);
}
try {
URL urls = new URL(url);
return String.format("%s://%s",urls.getProtocol(),urls.getHost());
}catch (Exception e){
return url;
}
}
public static WebElement _shadow_root(WebDriver driver,WebElement element){
return (WebElement)((JavascriptExecutor) driver).executeScript("return arguments[0].shadowRoot", element);
}
public static void allow_flash(WebDriver driver, String url){
url = _base_url(url);
driver.get(String.format("chrome://settings/content/siteDetails?site=%s",url));
WebElement webele_settings = _shadow_root(driver,(((ChromeDriver)driver).findElementByTagName("settings-ui")));
WebElement webele_container = webele_settings.findElement(By.id("container"));
WebElement webele_main = _shadow_root(driver,webele_container.findElement(By.id("main")));
WebElement showing_subpage = _shadow_root(driver,webele_main.findElement(By.className("showing-subpage")));
WebElement advancedPage = showing_subpage.findElement(By.id("advancedPage"));
WebElement settings_privacy_page = _shadow_root(driver,advancedPage.findElement(By.tagName("settings-privacy-page")));
WebElement pages = settings_privacy_page.findElement(By.id("pages"));
WebElement settings_subpage = pages.findElement(By.tagName("settings-subpage"));
WebElement site_details = _shadow_root(driver,settings_subpage.findElement(By.tagName("site-details")));
WebElement plugins = _shadow_root(driver,site_details.findElement(By.id("plugins")));
WebElement permission = plugins.findElement(By.id("permission"));
Select sel = new Select(permission);
sel.selectByValue("allow");
}
使用方法
String url = "https://v.youku.com/v_show/id_XNDIyMTI0MjUwNA==.html?spm=a2ha1.12675304.m_2556_c_8261.d_2&s=5b4e34d331864a6d89dc&scm=20140719.manual.2556.show_5b4e34d331864a6d89dc";
allow_flash(driver,url);
driver.get(url);