2

セレンドライバーを備えたpyccuracyを使用して Python アプリケーションをテストしています。

私のテスト結果は、xPath でいくつかの不安定性の問題を示しています。有効な xPath を使用しても、無効な xPath エラーが発生することがあります。もう一度テストを実行すると、うまくいくかもしれません。スタックトレースをたどりましたが、その解決策が見つかりませんでした。

スタックトレース:

I do not see "top-search-tag-name" element - FAILED - Error executing action <bound method ElementIsNotVisibleAction.execute of <pyccuracy.actions.core.element_actions.ElementIsNotVisibleAction object at 0x2283b10>> - Traceback (most recent call last):
  File "/workspace/env_test/local/lib/python2.7/site-packages/pyccuracy/fixture_items.py", line 99, in execute
    self.execute_function(context, *self.args, **self.kwargs)
  File "/workspace/env_test/local/lib/python2.7/site-packages/pyccuracy/actions/core/element_actions.py", line 179, in execute
    self.assert_element_is_not_visible(context, element_key, error_message)
  File "/workspace/env_test/local/lib/python2.7/site-packages/pyccuracy/actions/__init__.py", line 147, in assert_element_is_not_visible
    if self.is_element_visible(context, selector):
  File "/workspace/env_test/local/lib/python2.7/site-packages/pyccuracy/actions/__init__.py", line 139, in is_element_visible
    is_visible = context.browser_driver.is_element_visible(selector)
  File "/workspace/env_test/local/lib/python2.7/site-packages/pyccuracy/drivers/core/selenium_driver.py", line 86, in is_element_visible
    is_present = self.selenium.is_element_present(element_selector)
  File "/workspace/env_test/local/lib/python2.7/site-packages/selenium/selenium.py", line 1369, in is_element_present
    return self.get_boolean("isElementPresent", [locator,])
  File "/workspace/env_test/local/lib/python2.7/site-packages/selenium/selenium.py", line 261, in get_boolean
    boolstr = self.get_string(verb, args)
  File "/workspace/env_test/local/lib/python2.7/site-packages/selenium/selenium.py", line 223, in get_string
    result = self.do_command(verb, args)
  File "/workspace/env_test/local/lib/python2.7/site-packages/selenium/selenium.py", line 217, in do_command
    raise Exception, data
Exception: ERROR: Invalid xpath [2]: //form[@id='searchtop']//ul[@class = 'tags block editing']//li/a[@class = 'tag']

HTML コード (クリーンアップ)

<form id="searchtop">
  <ul class="tags block editing"> 
    <li class="tag"> 
      <a href="#" class="tag">Section Label</a>
      <a href="#" class="remove" title="Remove filter"></a> 
    </li> 
  </ul>
  ...  
</form>

このテストでは、フィルターの削除リンクをクリックして、要素が存在しないかどうかを確認しました。xPath は正しいです。たとえば、Chrome では、タグを削除する前に $x(...) で選択された要素を取得し、削除後に空のリストを取得します。これがテストの機能です。まったく同じ環境で、同じテストがエラーなしで実行されることがあります。

アイデア?

4

1 に答える 1