【问题标题】:Turn off chrome pdf reader plugin with ruby/watir使用 ruby​​/watir 关闭 chrome pdf 阅读器插件
【发布时间】:2018-04-17 03:53:09
【问题描述】:

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

(我已经在创建浏览器时寻找开关、配置文件设置来执行此操作,但没有找到)

如果您查看页面,我需要单击一个按钮。

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

我在以下位置找到了可能的解决方案: Shadow-dom support for selenium 看起来像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-reader 插件
  2. 如果不是,我必须处理“shadow-dom”,我该如何打开 shadow-root 以查看元素以便我可以操纵它们?

私信

【问题讨论】:

    标签: ruby google-chrome watir


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      相关资源
      最近更新 更多