JavaScriptスクリプトで宣言された空の配列をJava変数で取得する必要があります。
JavaScript配列は、Webページでそのように宣言されています。
tc_vars["products"] = new Array();
(私はproducts
の配列だけが必要で、tc_vars
1つは必要ありません)。
これが私がJavaでこの変数を取得しようとする方法です:
Object[] value = (Object[]) js.executeScript("return tc_vars['products'];");
(どこjs
さJavascriptExecutor
セレンと関連しますWebDriver
)。
私は通常、このメソッドを使用して文字列を取得するのに問題はありませんが、空の配列では機能しないようです。さらに、エラーメッセージはありません。WebDriverがクラッシュするだけです。
このexecuteScript
メソッドはObject
変数を返します。それをキャストString
(JS変数が文字列のとき)はうまく動作しますが、私はこの空の配列をキャストに機会がなかったですString[]
かObject[]
。
コメントで述べたように、tc_vars['products']
テストしたいポイントで実際にアクセスできることを確認する必要があります。たとえば、手動でブラウザを開き、セレンを使用してその値を要求するページのポイントに到達し、devtools javascriptコンソールを開いて、tc_varsの値を確認します。利用できない場合は、SeleniumWebdriverでは利用できません。
2つ目は、配列の場合、Selenium Webドライバー(少なくとも最新バージョン:2.42.2)が返されArrayList<Object>
、返されませんObject[]
。したがって、キャストは次のようになります。
ArrayList<Object> o = (ArrayList<Object>) js.executeScript("return tc_vars['products'];");
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加