繁体   English   中英

使用ruby / watir关闭chrome pdf reader插件

[英]Turn off chrome pdf reader plugin with ruby/watir

这是方案/兔子洞:我需要关闭chrome pdfreader插件,以便pdfs自动下载而不是在阅读器中加载。 我正在使用ruby和watir。 看起来很简单,使用chrome浏览器时,设置位于:chrome:// settings / content / pdfDocuments。

(我已经在创建浏览器时查找了开关,配置文件设置,但没有找到)

如果你看一下这个页面,我需要点击一个按钮。

这是摩擦,它被埋在几层“阴影根”中,使它看不见。 经过几个小时的研究,watir并没有很好地处理这个问题。

我找到了一个可能的解决方案: Shadow-dom支持硒 ,看起来像python。

我尝试在ruby中模拟这个:

def expand_shadow_element(element, driver)
    shadow_root = driver.execute_script('return arguments[0].shadowRoot', element)
return shadow_root
end
root0 = driver.find_element :tag_name => 'settings-ui'
shadow_root0 = expand_shadow_element(root0, driver)
root1 = shadow_root0.find_element :tag_name => 'settings-subpage'
shadow_root1 = expand_shadow_element(root1, driver)
root2 = shadow_root1.find_element :tag_name => 'settings-pdf-documents'
shadow_root2 = expand_shadow_element(root2, driver)
root3 = shadow_root2.find_element :tag_name => 'settings-toggle-button'
shadow_root3 = expand_shadow_element(root3, driver)
root4 = shadow_root3.find_element :tag_name => 'paper-toggle-button'
shadow_root4 = expand_shadow_element(root4, driver)
toggleButton = shadow_root4.find_element :id => "toggleButton"
toggleButton.click

def似乎有效,但是一旦定义了“root1”,它就会出错:

Selenium :: WebDriver :: Error :: UnknownError:未知错误:b.getElementsByTagName不是函数

基本上2个问题:

  1. 是否有更简单的方法来关闭pdf阅读器插件
  2. 如果没有,我必须处理“影子dom”我如何打开阴影根来看到元素,以便我可以操纵它们?

DM

在您为文件提供服务的响应中,将content-disposition标头设置为attachment ,它应该下载。 例:

headers['Content-Disposition'] = "attachment; filename=\\"#{filename}\\""

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM