JAVA使用selenium启用FLash控件

最近采用爬虫爬取页面,chrome浏览器对flash支持不友好,需要手动触发,网上介绍方法

Map<String,Object> 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);

测试并不能启用,后来查到https://blog.csdn.net/weixin_38389124/article/details/88894746的py语言,修改了一下,使用java调用

   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);

 

转载于:https://my.oschina.net/lovelong1/blog/3066792

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值