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を見つける

 


これで解決した

https://stackoverflow.com/questions/45217752/robotframework-xpaths-href-seen-as-not-a-valid-xpath-expression

 


~~写経~

 


そこの行は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

 


value

url

 

 

 

次は記載されているリンクを全て取得したい

ループ処理だな。

でも、selenuumIDE使うより

ふつうにコード書いた方が早い気がしてきた。