SeleniumIDEでリンクのURLを取得
やりたい事
Qiitaで
tag:任意のキーワードで検索
いいね順で並び替え
記事のタイトルを取得&echo
記事のURLを取得&echo
出来るなら
新規ウィンドウを開く
or
クリック元を覚えておいて上から順番にクリックして
その先の処理をして戻る
を繰り返す
seleniumideでリンクのURLを取得したい。
が
うまいこと定義ができない
xpath=//div[@id='main']/div/div/div/div[2]/div[2]/h1/a
これでstore txtだとタイトルを取れる
store attributeだとエラーになる。
エラーを発生させる。
エラー文と今回の調べたい@hrefでググる。
にたような事象のstackoverflowを見つける
これで解決した
~~写経~
そこの行は1はセレクターを密ます
wait Unil Elemnt Is visible xpath=//a[contains(text(),'Download selected certofocate')]
その後,href要素を取得しようとすると
${url} = Get Element Atribute xpath=//a[contains(text(),'Download selected certificate')]/@href
有効なxpath式でないとエラーになる
答え
xpathでは、の値//a[contains(text(),'Download selected certificate')]/@hrefは
そのaタグhref属性であるオブジェクトを返します。
呼び出すときにselenium2libraryにもかかわらず、Get Element Attribute,@特定のDOM EL素子のために、
の値を取得する属性名を指定します。
そのため、キーワードは文字列を最後の@で分割し、最初に部分でwebelementを取得し、
ターゲット属性(分割の2番目の部分)の値を取得します。
そうすると、要素のロケーターになります。
//a[contains(text(),'Download selected certificate')]/
そして、その末尾/が無効なxpathになります。
解決策は簡単です。末尾のスラッシュを消します。 たとえば:
${url}= Get Element Attribute xpath=//a[contains(text(),'Download selected certificate')]@href
最後のサンプルが機能する理由について、それも私を打ちます。
~~
全然わかんない…。
けど、スラッシュ入れずに@hrefすればいいみたい。
これはxpath式のお約束なのかな
とりあえずこれで出来きた。
command
store attribute
target
xpath= //*[@id="main"]/div/div/div[1]/div[2]/div[2]/h1/a@href
url
次は記載されているリンクを全て取得したい
ループ処理だな。
でも、selenuumIDE使うより
ふつうにコード書いた方が早い気がしてきた。