【发布时间】: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个问题:
- 有没有更简单的方法来关闭 pdf-reader 插件
- 如果不是,我必须处理“shadow-dom”,我该如何打开 shadow-root 以查看元素以便我可以操纵它们?
私信
【问题讨论】:
标签: ruby google-chrome watir