selenium - RobotFramework を使用してインライン JS スクリプト タグから値を抽出する

okwaves2024-01-25  8

Web サイトの上部で実行されるインライン JS がいくつかあります。これには、Web ページから取得した名前と値のペアがいくつか含まれています。これらが存在し、値があることを確認するために、ロボットフレームワークを使用してテストを作成しています。 JS の一部を抜粋すると次のようになります。

siteId':'1133','offerId':'1228','productId':'549','

次のように xpath ロケーターを使用して名前の存在を主張できます。

page should contain 
element  xpath=/html/head/script[contains(text(),"siteId")] 

ロボット フレームワークと Selenium ライブラリを使用する場合、ページを使用して存在する名前には要素キーワードが含まれている必要があり、これは完全に機能すると主張しています。

次に値を抽出する必要があります。上の例では「1133」です。

私は get elementattribute キーワードを使用していますが、これは DOM 内の他の場所にある値を取得するときにうまく機能しました。しかし、このケースでは機能しないようです。 v としては何も得られません値。

値を抽出できるようにするには、xpath を別の方法で記述する必要があると思われますが、よくわかりません。

あらゆるご支援やアイデアをお待ちしております。

ほんの一部の抜粋ではなく、スクリプトの完全なコンテンツを共有していただけますか?

– ジェイソン

2020 年 9 月 3 日 10:44

@JaSON おそらく 200 行あるので実際には無理ですNG。ただし、最初の機能は別です。ほとんどはすでに貼り付けたものと似ています。これは、Web サイトからのデータが起動されて埋め込まれた、ほぼ大きな JSON ファイルのように見えます。スクリプトが起動され、いくつかの値が取り込まれたことを確認するために、それらのいくつかに名前と値が存在すると主張しているだけです。したがって、私が知る必要があるのは、名前が存在し、値があるということだけです。問題は、取得される値が none であることです。したがって、私の xpath が十分ではないのではないかと考えています。

– ジャック・グルーバー

2020 年 9 月 3 日 10:51

DOM/XPath の観点からは、スクリプト要素のコンテンツは単なるプレーンテキストです。したがって、テキスト操作が必要になります。 Selenium はブラウザに組み込まれた XPath エンジンを使用するため、残るのは XPath 1.0 のみです。そのテキストを JavaScript として扱うか、stackoverflow.com/questions/52053569/… のように適切な Python モジュールを含む JSON として扱うのが最善だと思います。

– アレハンドロ

2020 年 9 月 3 日 16:08



------------------------

innerHTML 属性の値を取得することで、script タグの内容を取得できるはずです。参照するセ

私はロボット フレームワークには詳しくありませんが、提供された情報によると、innerHTML で get element 属性を使用すると、スクリプト タグの内容が文字列として返され、正規表現を使用して照合できるのではないかと思います。

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。