2017-11-04 12 views
2

ここにシナリオ/ウサギの穴があります:私はpdfがReaderに読み込まれるのではなく自動的にダウンロードされるようにchrome pdfreaderプラグインをオフにする必要があります。私はルビーとワイアを使用しています。クロムブラウザを使用している場合 chrome:// settings/content/pdfDOCuments に設定されています。ruby​​/watirでchrome pdf readerプラグインを無効にする

(私は、ブラウザの作成にこれを行うには、スイッチ用のプロファイル設定を見えたが、どれも認められません)

ページを見れば、私はクリックする必要がある1つのボタンがあります。

ここではこすり、それはそれを見えないようにする "影の根"のいくつかの層に埋もれています。これを研究してから数時間後、ワイアはこれをうまく処理しません。

私は可能な解決策を見つけました: Shadow-dom support for selenium これはpythonのようです。

ように私はルビーでこれをシミュレートしようとします:defはそれはそれはとエラー「ROOT1を」アウト定義になるしかし一度、動作しているようです

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 

セレン:: webdriverを::エラー::ないUnknownError:不明なエラー:b.getElementsByTagNameが機能

ではありませんので、基本的に2つの質問:

  1. pdf-readerプラグインを無効にする簡単な方法はありますか?
  2. "shadow-dom"に対処する必要があります。シャドールーツを開いて要素を表示する方法私はそれらを操作することができますか?

ファイルを提供している応答でDM

答えて

0

は、attachmentにコンテンツ-dispositionヘッダーを設定し、それをダウンロードしてください。例:

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

関連する問題