watir-webdriverでは、たとえば「b.link(:id,‘memolog’).href」みたいなかたちで要素を特定させて、特定した要素の属性を取得することができます(詳細はAPIなどを参照)。ただW3Cで規定されている属性しかメソッド化されていないので、たとえばtwitterのt.coのリンクの元URLの属性(data-expanded-url)などは通常では取得することができません。
html.slice(/data-expanded-url=\“([^”]+)\"/,1)みたいにしてhtmlからsliceすることはできますけど、やはり「link.data-expanded-url」みたいなかたちで取得できる方が良い
そこで要素で使用できる属性を追加するという話。属性はmodule Watirの中のclassでattributesのクラスメソッドによってメソッド化されています。同じような手順で好きな属性を追加することができます。
1 | require 'watir-webdriver' |
これでlinkのメソッドに「data-expaneded-url」が追加されます(メソッド名にハイフンが含まれると、その部分がマイナスの演算子として認識されてしまうので、実際にはlink.send(‘data-expanded-url’)みたいな形で使用するかなんとかにしないといけませんが)。
metaタグのproperty属性(og:imageとか指定するのに使う)を取得したい場合も同じ要領で簡単にとれるようになります。
1 | module Watir |