python - Selenium 中的 Invalid XPath expression 错误(具有有效的 XPath 表达式)

标签 python testing xpath selenium pyccuracy

我正在使用 pyccuracy 测试 Python 应用程序,它有一个 Selenium 驱动程序。

我的测试结果显示 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(...) 选择了元素,并在删除标签后得到一个空列表。这就是测试的作用。有时,相同的测试在完全相同的环境中运行而没有错误。

我该如何解决?

最佳答案

我在这里看到两个问题:

  1. 即使出现错误,您的测试似乎仍在继续运行
  2. 在执行下一个命令之前您不需要等待元素。

I do not see "top-search-tag-name" element - FAILED - Error executing

这个错误意味着……元素“top-search-tag-name”不存在。它通常发生在应用程序太慢或未完全加载时。要解决此问题,请在继续之前尝试等待该元素。

Exception: ERROR: Invalid xpath [2]: //form[@id='searchtop']//ul[@class = 'tags block editing']//li/a[@class = 'tag']

XPath 表达式似乎是有效的。您可以将 XPath 表达式更改为更短。

//form[@id='searchtop']//[a.='Section Label']

关于python - Selenium 中的 Invalid XPath expression 错误(具有有效的 XPath 表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10822576/

相关文章:

python - 安装 "python get-pip.py"时出错

python - 谷歌应用引擎 Python : Error in yaml config file when deploying

python - 尝试使用 FFT 在 Python 中分析音频信号

testing - 在 clojure 项目中组织测试层次结构

python - 多个返回值的正确类型提示

reactjs - 绕过 React 组件中的获取调用

java - 随机算法的 TDD

xml - 如何在xslt中获取节点的命名空间?

python - 如何使用 selenium webdriver Python 单击没有 lisk 的 span 按钮?

python - 无法选中复选框出现超时异常