2017-09-26 8 views
-1

ロボットフレームワークのテキストのロケータを取得する方法があるかどうかを知りたいですか?私はSelenium2LibraryでRobot Frameworkを使用しています。テキストでロケータを探す?

例:私のページにメッセージ「Hello」があり、新しいメッセージが表示されたときにその位置が変更され続けるとします。この「Hello」単語をクリックして完全なメッセージを表示します。どうやってやるの。助けてください。

+0

"Hello"にIDを追加しますか? – user3012759

+0

この質問はあまりにも曖昧です。 「こんにちは」というラベルの付いたページを作る方法は数多くあり、そのラベルにアクセスするにはいくつかの方法があります。より具体的にする必要があります。あなたは勉強して、xpathまたはCSSのパスを使用しようとしましたか? –

答えて

0

私は、角度のあるウェブページで場所が大きく変わっているのを見たので、あなたが意味することを理解しています。 IDは、ページが読み込まれるたびに新たに生成され、要素をクリックした順序に応じて変更される可能性があります。悪いことに、domおよびxpathベースのロケータにも影響を与える可能性があります。あなたの質問への短い答えは、標準のSelenium、Selenium2、ExtendedSelenium2、または他の標準ライブラリには存在しません。

質問に対する媒体の回答は、現在最も高度なClick Element by Textカスタムキーワードで解決されています。あなたの入力に基づいてxpathを生成し、余分なパラメータなしで簡単なテキスト検索で見つけられたら、それを実行します。それは時々見苦しく、引数の注入が必要になるかもしれませんが、一般的には非常にうまく動作し、xpathが遠隔で可能なときに使いやすいです。

Click Element by Text 
    # EXAMPLE USAGE 
    # Click Element by Text "text on the element" id="midlevellocationoftext"  button 
    # NOTE: Does not account for extra spaces at the beginning or end, text must be exact 
    # NOTE: Allows for injections on purpose to allow user to be more exact with their location 
    [Arguments]  ${text}  ${location}=* ${elementtype}=* 
    Click Element xpath=//*[@${location}]//${elementtype}[text()=${text}] 

長い答えは、私がより良いものに取り組んでいることです。これまでに私が知っていることがあります。これを行うための要素は空白の中に存在します。 JavaScriptでは、Webページを要素のリストに変換できます。これらの要素に.innerHTMLと呼んでテキストを取得できます。私は細かいことは考えていませんが、正直なところそれは可能だと思います。わかったら、コードレビューで他の人に見せてもらいます。

関連する問題