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 属性を使用すると、スクリプト タグの内容が文字列として返され、正規表現を使用して照合できるのではないかと思います。