0

次のように NoSuchElementException によって引き起こされた TimeoutException の原因を出力している場合:

catch (TimeoutException tox) {
            tox.printStackTrace();
            printWarn("Cause for failure => " + tox.getCause());
}

これから得られる出力は次のとおりです。

失敗の原因 => org.openqa.selenium.NoSuchElementException: 指定された検索パラメーターを使用してページ上に要素を見つけることができませんでした。(警告: サーバーはスタックトレース情報を提供しませんでした) コマンド期間またはタイムアウト: 10.41 秒..

ビルド情報: バージョン: '2.48.2'、リビジョン: '41bccdd10cf2c0560f637404c2d96164b67d9d67'、時間: '2015-10-09 13:08:06' システム情報: ホスト: 'localhost'、ip: '172.20.44.84'、os.名前:「Mac OS X」、os.arch:「x86_64」、os.version:「10.10.5」、java.version:「1.8.0_65」

ドライバー情報: AppiumDriver

機能[{....}]

セッション ID : 405d7843-5353-4a96-9288-b6d8301651b5

* **要素情報: {Using=id, value=et_mobile_editTextView}

プロパティを使用したり、知らないメソッドを追加したりして、太字のすべての情報を個別に取得できますか?

私が現在持っているものは次のとおりです。

String completeCause = tox.getCause();

私が探しているのは:

String buildInfo = tox.<somemethod>();
String driverInfo = tox.<somemethod>(); etc..

このたびは、お時間を割いてご協力いただきありがとうございました。

4

1 に答える 1

2

TimeOutExceptionの Selenium JavaDoc には、必要なすべての情報を個別に提供するメソッドgetAdditionalInformationgetBuildInformation、が示されています。getDriverNamegetSystemInformation

catch(TimeoutException tox) {
  tox.printStackTrace();
  String driverName = tox.getDriverName();
  BuildInfo buildInfo = tox.getBuildInformation();
  ...
}

要素情報は に隠されていgetAdditionalInformationます。(例外の継承元)のソース コードを見ると、情報はプライベート マップに格納されています。WebDriverExceptionただし、情報は で区切られているため、これらのエントリをフィルタリングして、 Element Info\nを持つものを検索することができます。

これは次のようになります (テストされていません。書き留めただけです)。

String[] additionalInformation = tox.getAdditionalInformation().split("\n");

for(String s : additionalInformation) {
  String[] part = s.split(":");
  if("Element Info".equals(part[0]) {
    String elementInfo = part[...]; //you need to investigate the right output of the split
  }
}

【旧記事】

ご覧のとおり、この場合はTimeOutException.getCause()a を返します。Seleniums JavaDocは、メソッドと.ThrowableNoSuchElementExceptiongetDriverNamegetSystemInformation

catch (TimeoutException tox) {
    tox.printStackTrace();
    if(tox.getCause() instanceof NoSuchElementException) {
      NoSuchElementException nse = (NoSuchElementException) tox.getCause();
      ...
    }
}
于 2016-01-20T04:09:34.870 に答える