Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Selenium中的xPath错误无效(使用有效的xPath)_Python_Testing_Xpath_Selenium_Pyccuracy - Fatal编程技术网

Python Selenium中的xPath错误无效(使用有效的xPath)

Python Selenium中的xPath错误无效(使用有效的xPath),python,testing,xpath,selenium,pyccuracy,Python,Testing,Xpath,Selenium,Pyccuracy,我正在使用测试一个Python应用程序,它有一个selenium驱动程序 我的测试结果显示了XPath的一些不稳定性问题。有时会出现无效的xPath错误,其中包含有效的xPath。如果我再次运行测试,它可能会工作。我跟踪了stacktrace,但找不到解决方案 Stacktrace: I do not see "top-search-tag-name" element - FAILED - Error executing action <bound method Ele

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

我的测试结果显示了XPath的一些不稳定性问题。有时会出现无效的xPath错误,其中包含有效的xPath。如果我再次运行测试,它可能会工作。我跟踪了stacktrace,但找不到解决方案

Stacktrace:

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']
我没有看到“top search tag name”元素-失败-执行操作时出错-回溯(最近一次调用):
文件“/workspace/env_test/local/lib/python2.7/site packages/pyccuracy/fixture_items.py”,执行中的第99行
self.execute_函数(上下文、*self.args、**self.kwargs)
文件“/workspace/env_test/local/lib/python2.7/site packages/pyccuracy/actions/core/element_actions.py”,执行中第179行
self.assert\u元素\u不可见(上下文、元素\u键、错误消息)
文件“/workspace/env_test/local/lib/python2.7/site packages/pyccuracy/actions/_init__uuu.py”,断言元素中的第147行不可见
如果self.u元素可见(上下文、选择器):
文件“/workspace/env_test/local/lib/python2.7/site packages/pyccuracy/actions/_init__.py”,第139行,在元素中可见
是否可见=上下文、浏览器、驱动程序、元素是否可见(选择器)
文件“/workspace/env_test/local/lib/python2.7/site packages/pyccuracy/drivers/core/selenium_driver.py”,第86行,在元素中可见
is_present=self.selenium.is_element_present(element_选择器)
文件“/workspace/env_test/local/lib/python2.7/site packages/selenium/selenium.py”,第1369行,是否存在元素
返回self.get_boolean(“isElementPresent”,[locator,])
文件“/workspace/env_test/local/lib/python2.7/site packages/selenium/selenium.py”,第261行,在get_boolean中
boolstr=self.get_字符串(动词,args)
get_字符串中的文件“/workspace/env_test/local/lib/python2.7/site packages/selenium/selenium.py”,第223行
结果=self.do_命令(动词,args)
do_命令中的文件“/workspace/env_test/local/lib/python2.7/site packages/selenium/selenium.py”,第217行
引发异常、数据
异常:错误:无效xpath[2]://表单[@id='searchtop']//ul[@class='tags块编辑']//li/a[@class='tag']
HTML代码(已清理)


...
在这个测试中,我单击了删除过滤器链接,然后检查元素是否不存在。xPath是正确的。例如,在Chrome中,我在删除标记之前使用$x(…)选择元素,然后在删除标记之后获得一个空列表。这就是测试所做的。有时,相同的测试在完全相同的环境中运行,没有错误

想法?

我在这里看到两个问题:

  • 即使出现错误,您的测试似乎仍在继续运行
  • 在执行下一个命令之前,您没有等待元素
  • 我没有看到“top search tag name”元素-失败-错误executi

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

    异常:错误:无效xpath[2]://表单[@id='searchtop']//ul[@class='tags块编辑']//li/a[@class='tag']

    xpath似乎是有效的。您介意将xpath改短一点并试一试吗?
    //表单[@id='searchtop']/[a.='Section Label']

    我在这里看到两个问题:

  • 即使出现错误,您的测试似乎仍在继续运行
  • 在执行下一个命令之前,您没有等待元素
  • 我没有看到“top search tag name”元素-失败-错误executi

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

    异常:错误:无效xpath[2]://表单[@id='searchtop']//ul[@class='tags块编辑']//li/a[@class='tag']

    xpath似乎是有效的。您介意将xpath改短一点并试一试吗?
    //表单[@id='searchtop']/[a.='Section Label']

    什么代码?pyccuracy代码和xPath出现在Stacktrace中。给我们一个没有HTML的盲目XPath定位器是没有用的。话虽如此,这可能是一个关于元素不能立即出现在页面上的问题,您是否尝试过查看WebDriverWait?你有没有试过使用另一个定位器,看看你是否有同样的行为?(我想CSS选择器在这里可以很好地工作)如果元素不存在,它不应该给出无效的xpath[2]错误。。从技术上讲,xpath格式中存在一些错误。。我想不出是什么。。您能否尝试通过逐个从末尾删除元素来调试xpath。。类似于try//form[@id='searchtop']//ul[@class='tags block editing']//li,然后不使用li。。这将帮助你找到问题的确切位置。我已经用更多的信息更新了这篇文章。我认为问题不在于等待时间,因为它会引发无效的xpath错误(我认为异常应该是另一个)。调试很困难,因为故障不能像我希望的那样重现。加布里埃尔,你有什么解决方案吗?什么代码?pyccuracy代码和xPath出现在Stacktrace中。给我们一个没有HTML的盲目XPath定位器是没有用的。话虽如此,这可能是一个关于元素不能立即出现在页面上的问题,您是否尝试过查看WebDriverWait?你有没有试过使用另一个定位器,看看你是否有同样的行为?(我想CSS选择器在这里可以很好地工作)如果元素不存在,它不应该给出无效的xpath[2]错误。。技术人员
    <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>